在lambda Where()中选择all

本文关键字:选择 all lambda Where | 更新日期: 2023-09-27 18:12:30

我知道这是有效的:

var result = someCollection.Select(x=>x);

我用Where()方法得到了类似的结果:

var result = someCollection.Where(x=> someBool ? x : x.Key == 1);

如果someBool为真,我想选择"everything"。上面的代码不起作用。有没有办法用来解这个?

在lambda Where()中选择all

使用||操作符,如果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);

作为在Where的谓词中使用||的替代方法,有时只在需要时应用Where是有用的。

var result = source;
if(!someBool)
  result = result.Where(x => x.Key == 1);

这通常更快一点,因为它根本不需要过滤。但是它将source暴露在外部,这有时是不希望的。