有没有一种很好的方法可以将IEnumerable分成2组这样的?

时间:2016-11-21 19:56:03

标签: c# .net linq

我有一段像

这样的代码
var inserts = viewtags.Where(vt => vt.TagID == null);
var updates = viewtags.Where(vt => vt.TagID != null);

但我想知道是否有更好的方法将IEnumerable划分为2个互斥组?

1 个答案:

答案 0 :(得分: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];