RedGate ftp://support.red-gate.com/ebooks/under-the-hood-of-net-memory-management-part1.pdfによるこの無料の電子ブックから、Linq のパフォーマンスへの影響を理解しようとしています 。
この本の 157-158 ページに、次の例を作成しました。
Order[] pastDueAccounts = null;
DateTimedueDate = DateTime.Today.AddDays(-7);
using(varcontext = new Context())
{
pastDueAccounts = context.Accounts.Where(account => account.DueDate < dueDate).ToArray();
}
次に、ラムダ式の一部を次の関数にリファクタリングしました。
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 クエリを実行することはできません。この例は間違っていて単に実行できないのでしょうか、それともこの問題をシミュレートする方法について私が耳を傾けるのに苦労しているだけなのでしょうか?