我有這樣的代碼:選擇一個選擇查詢內(名單)
我試圖使它更容易這樣的閱讀,但它不工作:
myCollection.MyType.select(x => x.mylist.select(y => MyHash.add(y)));
有什麼建議?
我有這樣的代碼:選擇一個選擇查詢內(名單)
我試圖使它更容易這樣的閱讀,但它不工作:
myCollection.MyType.select(x => x.mylist.select(y => MyHash.add(y)));
有什麼建議?
Select
將回項目,而不是修改它的集合。因此,您必須將其返回值分配給變量或成員或將其傳遞給方法。此外,您需要將結果展平,以將內部列表的成員添加到哈希集中。
因此,當你希望將結果添加到您的列表使用HashSet.UnionWith
:
myHash.UnionWith(myCollection.SelectMany(x => x.MyList));
Alternativly你也可以使用的HashSet
接受項目的集合構造:
var myHash = new HashSet<string>(...);
但是恕我直言這比使用一些基於foreach的方法更不可讀。
下面是我該怎麼做,分隔查詢定義和狀態修改。
IEnumerable<string> items = myCollection.SelectMany(a => a.myList);
foreach(string b in items)
{
MyHash.Add(b);
}
如果你想一個行由於某種原因:
myCollection.SelectMany(a => a.myList).ToList().ForEach(b => MyHash.Add(b));
請界定 「不工作」。就目前而言,你看起來會有很多編譯錯誤。 – yaakov