Linqクエリの「選択」フィールドで定期的に返したい特定の計算フィールドがあります。たとえば、今年の顧客注文合計と、顧客の他の人口統計情報です。
public class Customer {
public decimal TotalPurchasesThisYear(MyDataContext db) {
return db.Orders.Where(o => o.CustomerID == ID)
.Sum(o => o.OrderTotalAmt);
}
}
public class SomeReport {
public void GetCustomerInfoBySalesperson(long salespersonID) {
using (var db = new MyDataContext()) {
var q = db.Customers.Where(c => c.SalespersonID == salespersonID)
.Select(c => new { c.Name, c.Address, ThisYearPurchases = c.TotalPurchasesThisYear(db) })
.ToList();
// etc..
}
}
}
TotalPurchasesThisYear
明らかに、 SQL 変換がないため、これは機能しません。しかし、その中のすべてに SQL 変換があります。多くの場所で同じ計算を行っているため、そのコードをクエリに直接含めたくありません。私の直感では、これは an を使用して実行する必要がありますが、いじってExpression
みましたが、正しい構文を完全に理解することはできません。
誰か助けて?ありがとう!