我有一段像
这样的代码var inserts = viewtags.Where(vt => vt.TagID == null);
var updates = viewtags.Where(vt => vt.TagID != null);
但我想知道是否有更好的方法将IEnumerable划分为2个互斥组?
答案 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];