c# - 您可以将 Expression<Func<T, bool>> 谓词传递到 linq Where 语句中吗?

标签 c#

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

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

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

最佳答案

如果您使用 Enumerable.Where方法,那么你需要编译你的表达式

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

还要想想你是否真的需要在这里使用表达式。您可以简单地传递 Func<T, bool>

关于c# - 您可以将 Expression<Func<T, bool>> 谓词传递到 linq Where 语句中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185534/

相关文章:

C# Windows 窗体倒计时器

c# - RabbitMQ 客户端连接到多个主机

c# - 如何防止 WCF 客户端应用程序中的 BufferManager/PooledBufferManager 浪费内存?

c# - MSBuild 任务不会导致编译生成的 c# 文件

c# - 为什么我不能创建对象实例?

c# - 删除 json 字符串中的尾随空格 C#

c# - 无法创建接口(interface)的实例 (PagedList)

C# Web服务,如何接收JSON

c# - 如何获取 DataGridRow 单元格的值?

c# - 请求消息已发送。不能多次发送同一个请求报文