如何扩展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运算符'&;'不能应用于类型为"
bool
"的操作数和'System.Linq.Expressions.Expression<System.Func<T,bool>>
'
先扩展谓词,然后将其作为.Where(predicate)
反馈,会更好吗?你会怎么做?
先扩展谓词,然后反馈为Where(谓词)会更好吗?你会怎么做?
是的,正是这样,如果我正确理解你的建议。你可以这样链.Where()
:
public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now).Where(predicate);
}