2017-09-03 65 views
1

我有這樣的代碼:選擇一個選擇查詢內(名單)

我試圖使它更容易這樣的閱讀,但它不工作:

myCollection.MyType.select(x => x.mylist.select(y => MyHash.add(y))); 

有什麼建議?

+1

請界定 「不工作」。就目前而言,你看起來會有很多編譯錯誤。 – yaakov

回答

4

Select項目,而不是修改它的集合。因此,您必須將其返回值分配給變量或成員或將其傳遞給方法。此外,您需要將結果展平,以將內部列表的成員添加到哈希集中。

因此,當你希望將結果添加到您的列表使用HashSet.UnionWith

myHash.UnionWith(myCollection.SelectMany(x => x.MyList)); 

Alternativly你也可以使用的HashSet接受項目的集合構造:

var myHash = new HashSet<string>(...); 

但是恕我直言這比使用一些基於foreach的方法更不可讀。

0

下面是我該怎麼做,分隔查詢定義和狀態修改。

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));