我知道这有效:
var result = someCollection.Select(x=>x);
我使用该Where()
方法获得了类似的结果:
var result = someCollection.Where(x=> someBool ? x : x.Key == 1);
someBool
如果是真的,我想选择“一切” 。上面的代码不起作用。有没有办法使用 lambda 解决这个问题?
使用||
运算符,如果someBool
为真,则选择所有记录。
var result = someCollection.Where(x=> someBool || x.Key == 1);
您正在寻找条件OR
运算符
var result = someCollection.Where(x => someBool || x.Key == 1);
你也可以这样做,
var result = someCollection;
if (someBool)
{
result = someCollection.Where(x => x.Key == 1);
}
我认为额外的输入提高了代码的可读性并可以提高性能。
这是经过测试的代码
var result = someCollection.Where(x => someBool || x.Key == 1);
作为使用||
insideWhere
谓词的替代方法,有时仅在需要时才应用它是有用Where
的。
var result = source;
if(!someBool)
result = result.Where(x => x.Key == 1);
这通常会快一点,因为它根本不需要过滤。但它暴source
露在外面,这有时是不可取的。