2012-10-01 3 views
0

내 목록 :목록에서 객체의 교차 부분을 얻는 방법은?

List<ArtistAndTags> List1 = new List<ArtistAndTags>(); //Contains about 100 elements. 
List<ArtistAndTags> List2 = new List<ArtistAndTags>(); //Contains about 70 elements. 

내 클래스 :

public class ArtistAndTags 
    { 
     public string ArtistName { get; set; } 
     public List<string> Tags = new List<string>(); //Compare with this list. 
    } 

내가 Tags의 모든 요소의 교차를 포함 각 ArtistAndTagsArtistAndTags 사이 목록 ArtistName를 얻을 수 있습니다.

답변

0
 List<ArtistAndTags> List1 = new List<ArtistAndTags>(); 
     List<ArtistAndTags> List2 = new List<ArtistAndTags>(); 

     var intersectedList = new List<ArtistAndTags>(); 

     foreach (var item1 in List1) 
     { 
      foreach (var item2 in List2) 
      { 
       if (item2.Tags.Intersect(item1.Tags).Any())) 
       { 
        intersectedList.Add(item1); 
        intersectedList.Add(item2); 
       } 
      } 
     } 

     var result = intersectedList.Select(x => x.ArtistName).ToList(); 
+0

큰 감사! 그래서 저는 이미 foreach로 풀었지만, 여러분의'Select (x => x.ArtistName)'는 정말로 도움이됩니다. –