2011-09-15 2 views
1

저는 Linq를 처음 사용합니다. 내 이해에서 LINQ는 쿼리에만 사용되어야하지만 컬렉션이나 db 등은 수정하면 안됩니다.RemoveAll()의 목적

Microsoft에서 RemoveAll() 확장명을 제공 한 이유가 무엇입니까?

내 이해만큼이나 RemoveAll()은 컬렉션을 수정합니다.

Linq의 목적에 위배되지 않습니까?

RemoveAll()을 제공 한 이유를 설명해주세요.

+3

이해가 잘못되었습니다. –

+0

존, 동의하지 않습니다. LINQ의 핵심 개념은 불변성 (물론 지연된 실행)과 같은 함수 프로그래밍 측면을 제공하는 것입니다. RemoveAll이 위반하지 않습니다. 예를 들어, Enumerable.ForEach 확장 메소드가 내장되어 있지 않은 이유에 대한 공통적 인 주장은 불변성의 원칙에 위배된다는 것입니다. 그러나 OP 질문에 (그리고 SLaks에 명시된 바와 같이) RemoveAll은 LINQ가 아니며 확장 메서드가 아닙니다. – Jeff

답변

11

RemoveAll()은 .Net 2.0의 List<T> 클래스의 일부입니다.
LINQ와 아무런 관련이 없습니다. 그것은 LINQ보다 2 년 앞선 것입니다.

List<T>ConvertAll, Exists, Find, FindAll, FindLastTrueForAll 포함 LINQ 방법과 같은 일을 할 방법을 가지고 있습니다.

또한 ForEach 방법이 있으며, is not LINQ입니다.

+1

그리고 List의 Reverse()에 대해서는 잊지 마라. LINQ의 Reverse()와 같지 않다. –

+0

@jdv : 또는 Sort(); 왜 내가 그들을 언급하지 않았는 지. – SLaks