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技术吗? 改变你决定一个物体是否与另一个物体不同的方式。