这两个陈述中的哪一个是更快/更好的做法?
myList.Where(x =>
{
bool itemOne= x.ItemOne == paramItemOne;
bool itemTwo = x.ItemTwo == paramItemTwo;
return itemOne && itemTwo;
})
myList.Where(x => x.ItemOne == paramItemOne).Where(x=>x.ItemTwo == paramItemTwo)
或者它们是一样的吗?
答案 0 :(得分:7)
我不会说。最快的将是:
myList.Where(x => x.ItemOne == paramItemOne && x.ItemTwo == paramItemTwo)
(假设编译器/ JIT没有优化第一种形式的变量赋值)
第二种形式会更慢,因为它可能会对提供给Where语句的委托进行更多的方法调用。
答案 1 :(得分:1)
结果是一样的,但是,我建议你写这个:
myList.Where(x =>
{
return x.ItemOne == paramItemOne && x.ItemTwo == paramItemTwo;
});
这可以保证更快地运行,因为如果x.ItemTwo == paramItemTwo
x.ItemOne == paramItemOne
答案 2 :(得分:0)
表现相同或非常接近。第二个可能有更多的方法开销。
比性能更重要的是,我会说第一个是更好的做法,因为更清晰。
答案 3 :(得分:0)
首先检查每个列表项的两个条件。 第二个按第一个条件过滤,然后按第二个条件过滤结果。
第二个是创建和填充另一个临时集合,但对第二个条件的比较较少。