问题描述
||
最好在&&运算符中包含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();
解决方法
最好在一个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>
,则通常会获得更好的性能(除非您一遍又一遍地阅读它)。