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

时间:2013-02-23 09:39:39

标签: c# .net linq lambda expression-trees

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

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)吗?你会怎么做?

1 个答案:

答案 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);
}