c# - 是否可以在对 Where 的调用中调用命名方法?

标签 c# .net linq entity-framework-4 linq-to-entities

我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能含义 ftp://support.red-gate.com/ebooks/under-the-hood-of-net-memory-management-part1.pdf

在本书的第 157-158 页,他们创建了以下示例。

Order[] pastDueAccounts = null;  
DateTimedueDate = DateTime.Today.AddDays(-7);  
using(varcontext = new Context())    
{  
    pastDueAccounts = context.Accounts.Where(account => account.DueDate < dueDate).ToArray();  
} 

然后他们将部分 lamda 表达式重构为以下函数。

public bool PastDueAccount(Account account)  
{  
    return account.DueDate < DateTime.Today.AddDays(-7);  
} 

最后他们使用了这个函数如下。

Order[] pastDueAccounts = null;  
using(varcontext = new Context())  
{  
    pastDueAccounts = context.Accounts.Where(account => PastDueAccount(account)).ToArray();  
} 

根据我目前的研究,无法运行此 linq 查询,因为 LINQ 将无法识别该方法并且无法转换为存储表达式。我想知道这个示例是否错误并且根本无法运行,或者我是否只是很难听到如何模拟这个问题?

最佳答案

你是对的,LINQ-to-Entities 无法按照它的显示方式调用它。

它可以在 LINQ-to-Entities 中使用的唯一方法是:

关于c# - 是否可以在对 Where 的调用中调用命名方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903138/

相关文章:

c# - 如何使用 C# 将数据属性添加到下拉菜单

linq - Entity Framework - "All"方法

c# - 索引检索 SortedDictionary<>

c# - "Timeout expired"专门使用 using 语句的代码出现异常

c# - Caliburn Micro 取消窗口从 ViewModel 关闭

.NET TCPClient 连接状态

c# - 使用 Nhibernate Criteria Api 查询集合?

c# - 有没有办法在 windows 7 和 visual studio 2012 中创建 windows phone 8 应用程序

javascript - 在 CefSharp 中从 JS 调用异步方法

c# - Linq 按不排序排序