2016-11-21 38 views
0

我有這樣有沒有一種漂亮的方式可以將IEnumerable分成兩組?

var inserts = viewtags.Where(vt => vt.TagID == null); 
var updates = viewtags.Where(vt => vt.TagID != null); 

一段代碼,但我不知道是否有更好的方法來一個IEnumerable分成2個互相排斥的羣體?

+4

'VAR組= viewtags.GroupBy(!VT => vt.TagID = NULL);' –

+1

你的意思是GroupBy? –

回答

0

您可以使用Linq GroupBy。您可以使用下面的做到這一點:

var results = viewtags.GroupBy(vt => vt.TagID != null); 

很顯然,我真的不知道這個類在這種情況下,你vt項目。但是這基本上會返回一個你可以操作的IEnumerable<IGrouping<Bool, VTClass>>。如果您想根據是否需要插入或更新來訪問項目,則更好的方法是致電ToLookup()

var results = viewtags.ToLookup(vt => vt.TagID != null); 

此時你可以做的,這使得它稍微容易消耗爲更高版本:

var inserts = results[false]; 
var updates = results[true]; 
+0

爲什麼downvote? – Ian

+3

我不是一個downvoter,但是如果你打算這樣使用它,你最好使用'ToLookup'而不是'GroupBy' +'ToDictionary',這也會阻止最後兩行中的'KeyNotFoundException'。 –

+0

謝謝伊萬,明天會更新答案。 – Ian

相關問題