C# 当列表中的列表包含类的这些对象时,如何获得对象的交集?
我的名单:C# 当列表中的列表包含类的这些对象时,如何获得对象的交集?,c#,list,comparison,ienumerable,intersection,C#,List,Comparison,Ienumerable,Intersection,我的名单: List<ArtistAndTags> List1 = new List<ArtistAndTags>(); //Contains about 100 elements. List<ArtistAndTags> List2 = new List<ArtistAndTags>(); //Contains about 70 elements. List List1=新列表()//包含大约100个元素。 List List2=新列表()//
List<ArtistAndTags> List1 = new List<ArtistAndTags>(); //Contains about 100 elements.
List<ArtistAndTags> List2 = new List<ArtistAndTags>(); //Contains about 70 elements.
List List1=新列表()//包含大约100个元素。
List List2=新列表()//包含大约70个元素。
我的班级:
public class ArtistAndTags
{
public string ArtistName { get; set; }
public List<string> Tags = new List<string>(); //Compare with this list.
}
公共类标签
{
公共字符串ArtistName{get;set;}
public List Tags=new List();//与此列表进行比较。
}
我应该在ArtistAndTags
列表之间获取每个ArtistAndTags
的ArtistName
,这些列表包含标记中任何元素的交集列表列表1=新列表();
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();
List List2=新列表();
var intersectedList=新列表();
foreach(列表1中的变量项1)
{
foreach(列表2中的变量项2)
{
if(item2.Tags.Intersect(item1.Tags.Any())
{
交叉列表。添加(第1项);
交叉列表。添加(第2项);
}
}
}
var result=intersectedList.Select(x=>x.ArtistName.ToList();
非常感谢!所以我已经用foreach
解决了这个问题,但是你的Select(x=>x.ArtistName)
确实帮助了我。