簡體   English   中英

LINQ從列表中的列表中獲取唯一項

[英]LINQ Getting Unique items from a List within a List

我有一個MyObject類型的List ,其定義如下:

class MyObject {
     public string ListName { get; set; }
     public IEnumerable<OtherObject> ObjectList { get; set;}
}

給定一個MyObject類型的List ,使用LINQ我應該使用什么表達式來獲取所有不同的OtherObject

我打算做的是循環每個MyObject並從ObjectList屬性中獲取不同的OtherObject ,但是我需要在列表中獲得不同的。

請注意,如果: MyObject[0].Objectlist[0] == 'ItemA'MyObject[1].Objectlist[0] == 'ItemA'它仍將返回ItemA的單個實例。 此代碼僅是一種表示形式。 順便說一句,這不是我訪問我的對象的方式。

您只需使用Set邏輯即可實現此目的。 C#以HashSet的形式有一個很好的實現:

var set = new HashSet<OtherObject>(myObjects.SelectMany(mo => mo.ObjectList));

或者,如果您更喜歡延遲執行,則可以使用LINQ Distinct方法:

var distinct = myObjects.SelectMany(mo => mo.ObjectList).Distinct();

怎么樣:

var l = new List<MyObject>(...);
var unique = l.SelectMany(j => j.ObjectList).Distinct();

您可以使用Distinct()中的lambda技術嗎? 改變你決定一個物體是否與另一個物體不同的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM