2010-04-06 6 views
2

나는 이미지 경로 모음과 더 큰 이미지 모음 (경로 속성 포함) 모음을 가지고 있습니다. 일치하는 이미지를 확인하는 코드가 있지만 네 개의 일치하는 이미지 경로가 있어야하는 경우 (첫 번째 컬렉션에있는 수만큼) 첫 번째 컬렉션에 누락 된 이미지 경로가없는 경우 어떻게해야합니까? 쓰기 루프?LINQ에서 컬렉션 간의 차이 얻기

 List<string> ImagesToCheck = new List<string>() 
     { 
      "", 
      "s", 
      "ssdd" 
     }; 

     IEnumerable<HtmlImage> Images = manager.ActiveBrowser.Find.AllControls<HtmlImage>(); 

     var v = from i in Images 
       where ImagesToCheck.Any(x => x == i.Src) 
       select i; 

     if (v.Count() < 3) 
     { 

     } 

그래서 나는 컬렉션이라는 제목의 절에서 하지있는 항목을 얻을 필요가 있지만, ImagesToCheck에 있습니다.

어떻게 LINQ로이 작업을 수행 할 수 있습니까?

감사

+0

ImagesToCheck에서 사용되지 않은 이미지를 .Src로 수집하는 경로를 찾고 있습니까? – Lazarus

답변

2

이 시도 .. 그 라인을 따라

var images = from s in ImagesToCheck where !i.Any(c => c.Path == s) select s; 

뭔가 ..

이안

0

ImagesToCheck.Where (X를 =>! v.Contains (X))

0
var results = ImagesToCheck.Where(i => !v.Contains(i)); 

친절 ESS는,

+0

'var results = ImagesToCheck.Where (i =>! v.Contains (thisImage => thisImage.Path == i));'? – ANeves

0
var images = from s in ImagesToCheck where i.All(c => c.Path != s) select s; 
0

이 답변을 게시 한 이후 오랜만이야,하지만 Linq에이 교차하고 Except 있습니다. 마지막 컬렉션은 두 번째 컬렉션에도있는 항목을 제외하고 첫 번째 컬렉션의 모든 항목을 제공합니다. ExceptEquals() 표준 연산자를 사용하고 IEqualityComparer<T>은 Path 속성과 일치한다는 단점이 있습니다. 그러나 결국 당신은 다음과 같은 것을 쓸 수있을 것입니다 :

ImagesToCheck.Except(Images) 

나는 꽤 깔끔하다고 생각합니다.

관련 문제