我要尋找以下情況優雅的解決方案的倍數:聯盟在C#中列出
我有一個包含像
class MyClass{
...
public List<SomeOtherClass> SomeOtherClassList {get; set;}
...
}
列表一類叫做Model
第三類包含一個List<Myclass>
這是我從外部操作的那個。
現在我想用一種方法來擴展Model類,該方法返回所有MyClass實例上的所有獨特的SomeOtherClass實例。
我知道有Union()
方法和foreach循環我可以很容易地解決這個問題,我真的這樣做。但是,由於我對所有C#3 +特性都很陌生,因此我很好奇如何使用Linq或不使用Linq來實現更優雅。
我已經找到了一種方法,這似乎相當笨拙的我,但它的工作原理:
List<SomeOtherClass> ret = new List<SomeOtherClass>();
MyClassList.Select(b => b.SomeOtherClasses).ToList().ForEach(l => ret = ret.Union(l).ToList());
return ret;
注:b.SomeotherClasses
屬性返回List<SomeOtherClasses>
。
這段代碼距離完美還有一段距離,因爲我必須弄清楚使用C#3以及哪些不是最好的風格。所以,我列出了一些關於該片段的想法,我很樂意收到一些評論。除此之外,我很樂意聽到一些評論如何進一步改進此代碼。
- 臨時名單
ret
會一直在C#2也許做法的一部分,但它是正確的,我應該能夠辭職此列表使用方法鏈接呢?或者我錯過了這一點? - 是否真的需要使用中間體
ToList()
方法?我想要的是對選擇的每個成員執行進一步的操作。 - 那些ToList()操作的成本是多少?他們是不錯的風格?必要?
謝謝。
這裏獨特的含義是什麼?我的意思是,你是否在你的'List'中存儲了多個對同一個對象的引用? –