如何扩展lambda表达式参数中的谓词

本文关键字:参数 表达式 谓词 lambda 何扩展 扩展 | 更新日期: 2023-09-27 18:00:36

我想在我的方法中扩展表达式参数,以添加我自己的过滤器。我正试图做下面这样的事情,但语法错误:

public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
    return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now && predicate)
}

编译器正在抱怨。它在Visual Studio 2012中抱怨此错误:

错误29运算符'&amp;'不能应用于类型为"bool"的操作数和'System.Linq.Expressions.Expression<System.Func<T,bool>>'

先扩展谓词,然后将其作为.Where(predicate)反馈,会更好吗?你会怎么做?

如何扩展lambda表达式参数中的谓词

先扩展谓词,然后反馈为Where(谓词)会更好吗?你会怎么做?

是的,正是这样,如果我正确理解你的建议。你可以这样链.Where()

public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
    return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now).Where(predicate);
}