2010-11-22 6 views
1

LINQ 결과가 있고 List가 있습니다. LINQ에서 Where()를 수행하고 List에서 일치하는 모든 문자열을 제거하려고합니다.LINQ 결과에서 제거하는 방법, 배열에서 요소를 일치시키는 것

나는의 오류를 얻을 : 지역 순서는 연산자

내가 무엇을 할 수 포함 제외 쿼리 연산자의 SQL 구현에 LINQ에서 사용할 수 없습니다?

+2

전체를 게시하시기 바랍니다 다음 임시 데이터 구조가 필요하지 않습니다 때문에 List.RemoveAll 방법을 사용하는 것입니다 코드 샘플. –

답변

3

당신은 클라이언트에 모든 결과를 다운로드하고 로컬 Where을 수행하기 위해 LINQ - 투 - SQL을 강제로 Where 호출 이전 AsEnumerable() 또는 ToList()를 호출해야합니다.

당신은 항목 당신 '의 (ToArray보다 빠른 ToList와) 사본을 만들 필요가

+0

AsEnumerable은 항상 materialization을 강제합니까? –

+0

@ 롭 : 어떻게 할 수 없습니까? – SLaks

+0

사실 캐스트 일 뿐이므로 http://msdn.microsoft.com/en-us/library/bb335435.aspx "컴파일 타임 형식을 변경하는 것 외에는 (Ascumerable (IEnumerable ) 메서드는 효과가 없습니다. IEnumerable 을 IEnumerable 자체를 구현하는 형식의 원본 "입니다. –

2

을 (당신의 Where 호출이 서버에서 수행 할 수 없기 때문에, 당신은 클라이언트에서 그것을 할 필요) 제거 재 :

var removeMe = list.Where(...).ToList(); 

이제 removeMe 통해 반복하는 것이 안전 줘야하지만, 더 좋은 방법은

+0

ToList()는 더 빠릅니다. – SLaks

+0

@SLaks –

+0

당신의 세트가 정확하게 2^N 개의 아이템을 가지고 있지 않다면, 'ToArray'는 배열이 정확히 올바른 크기 여야하기 때문에 더 작은 배열로 끝내야합니다. 리스트는 끝에 여분의 공간을 가질 수 있기 때문에 ToList는 적은 수의 복사본을 포함합니다. – SLaks

관련 문제