最好有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();
答案 0 :(得分:5)
最好在单个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>
,那么通常会获得更好的性能(除非您反复阅读)。