Linq Func代表 - 可以添加到?

时间:2015-03-20 10:24:56

标签: c# linq

我有一个方法。

如果可能的话,我想添加一些标准过滤,另外通过func变量:

.Where(p => p.IsLive)

我当然可以在函数字符串本身中传递它,但是,我需要记住每次都这样做。我已经尝试了各种方法将它与func变量合并,但还没有设法破解语法(如果可能的话)。有什么建议吗?

Product GetProduct(Func<Product, bool> func)
{
    return CompareView.Select()
        .Where(func) // Need to add std filtering here
        .FirstOrDefault();
}

1 个答案:

答案 0 :(得分:6)

最简单的方法就是将另一个调用链接到Where

Product GetProduct(Func<Product, bool> func)
{
    return CompareView.Select()
        .Where(p => p.IsLive)
        .Where(func)
        .FirstOrDefault();
}

可以创建一个像这样的新代表:

Product GetProduct(Func<Product, bool> func)
{
    return CompareView.Select()
        .Where(p => p.IsLive && func(p))
        .FirstOrDefault();
}

......但我个人并不认为这与where-composition方法一样简单。