LINQ从列表中的列表中获取唯一项
我有一个MyObject
类型的List
,其定义如下:
class MyObject { public string ListName { get; set; } public IEnumerable ObjectList { get; set;} }
给定一个MyObject
类型的List
,使用LINQ我应该使用什么表达式来获取所有不同的OtherObject
?
我打算做的是循环每个MyObject
并从ObjectList
属性中获取不同的OtherObject
,但是我需要在列表中获得不同的。
请注意,如果: MyObject[0].Objectlist[0] == 'ItemA'
和MyObject[1].Objectlist[0] == 'ItemA'
它仍将返回ItemA
的单个实例。 此代码仅是一种表示forms。 顺便说一句,这不是我访问我的对象的方式。
您只需使用Set逻辑即可实现此目的。 C#以HashSet的forms有一个很好的实现:
var set = new HashSet(myObjects.SelectMany(mo => mo.ObjectList));
或者,如果您更喜欢延迟执行,则可以使用LINQ Distinct方法:
var distinct = myObjects.SelectMany(mo => mo.ObjectList).Distinct();
怎么样:
var l = new List(...); var unique = l.SelectMany(j => j.ObjectList).Distinct();
您可以使用Distinct()中的lambda技术吗? 改变你决定一个物体是否与另一个物体不同的方式。