我想在我的方法中扩展表达式参数来添加我自己的过滤器。我正在尝试做类似下面的事情,但语法错误:
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;&amp;'不能应用于“
bool
”类型的操作数 和 'System.Linq.Expressions.Expression<System.Func<T,bool>>
'
首先扩展谓词会更好,然后反馈为.Where(predicate)
吗?你会怎么做?
答案 0 :(得分:4)
首先扩展谓词会更好,然后反馈为.Where(谓词)?你会怎么做?
是的,如果我明白你的建议,那就完全一样。您可以像这样链接.Where()
:
public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now).Where(predicate);
}