2010-07-28 4 views
0

Linq는 훌륭하지만 언제나 저를 조금 혼란스럽게합니다.Linq 목록 비교

이 내 최근의 혼란입니다 :

내가 두 List<String> 개체가 말한다. 우리는 그들을 sourceListdestList이라고 부를 것입니다.

destList가 아니라 sourceList에있는 문자열 목록을 찾고 sourceList가 아닌 destList에있는 문자열 목록을 찾는 방법이 필요합니다.

 
    sourceList destList 
    Orange  
    Apple   Apple 
    Grape   Grape 
        Kiwi 
        Banana 

그래서 내가 찾고 있어요 첫 번째 결과는 오렌지와 목록은 다음과 같습니다

그래서 여기 혼란 약간의 예입니다. 두 번째 결과는 키위와 바나나가있는 목록입니다.

Linq와 함께하는 방법을 알려주세요.

답변

3

저는 실제로 오늘 일찍이 일을하고있었습니다. sukru 말했듯이 코드는 당신을 위해 그것을 수행해야합니다

List<string> firstResultList = sourceList.Except(destList); 
List<string> secondResultList = destList.Except(sourceList); 

firstResultList는 오렌지를하고 secondResultList 키위와 바나나를해야합니다.

5
sourceList.Except(destList) 

소스와 dest의 차이가 발생해야합니다. 당신은 또한 그 반대를하고 결합 할 수 있습니다.

+0

http://www.hookedonlinq.com/ExceptOperator.ashx는 Except 메서드의 좋은 예입니다. 자신 만의 비교 함수를 만들 수있는 오버로드가 있습니다. 이 경우에는 필요하지 않지만 다른 유용한 상황이 될 수 있습니다. – mpenrow