有2个Where子句还是有1个Where子句加上&&运算符更好,还是无关紧要?
list.Where(x => x.Prop1 == value1).Where(x => x.Prop2 == value2).ToList();或
list.Where(x => x.Prop1 == value1 && x.Prop2 == value2).ToList();发布于 2011-05-28 06:15:09
在单个lambda中使用第二个测试和两个测试会更好。它只会将列表循环一次,并且调用委托的频率只有它的一半。第一个版本循环列表两次。
为了清楚起见,这是更好的选择:
list.Where(x => x.Prop1 == value1 && x.Prop2 == value2).ToList();它也可以写成
var results =
(from x in list
where x.Prop1 == value1 && x.Prop2 == value2
select x).ToList();如果您可以避免.ToList()调用并将其用作IEnumerable<T>,您通常会获得更好的性能(除非您一遍又一遍地阅读)。
https://stackoverflow.com/questions/6158195
复制相似问题