我的名单:
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.
}
我应该在ArtistName
列表之间得到ArtistAndTags
ArtistAndTags
个Tags
列表,其中包含{{1}}中任何元素的交集。
答案 0 :(得分: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();