你能传入一个表达式<func <t,bool =“”>&gt;谓词到linq Where语句?</func <t,>

时间:2013-11-25 05:41:42

标签: c#

所以我有一个类似的方法:

public List<T> SomeFunction(Expression<Func<T, bool>> predicate) {
    return someList.Where(predicate).ToList();
}

此代码不可编译,因为我无法将谓词传递给linq Where语句。有没有办法更改谓词以便与linq一起使用?

1 个答案:

答案 0 :(得分:4)

如果您使用Enumerable.Where方法,则需要编译表达式

public List<T> SomeFunction(Expression<Func<T, bool>> predicate) {
    return someList.Where(predicate.Compile()).ToList();
}

还要考虑一下你是否真的需要在这里使用表达式。您只需传递Func<T, bool>

即可