我有一个特定的计算字段,我经常希望在 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
但我已经玩过并且不能完全找出正确的语法。
帮助,有人吗?谢谢!