【发布时间】:2017-09-19 05:46:30
【问题描述】:
我很难将此表达式转换为 SQL 表达式。我尝试了各种应用程序,但都失败了。我尝试自己转换,但结果不同。
db.Trans_SAPStat.Where(s => s.EmployeeID == EmployeeID && s.PaymentID != PaymentID && !s.Status.Equals("cancelled or", StringComparison.OrdinalIgnoreCase))
.Join(_db.Trans_PaymentDetail,
stat => stat.PaymentID,
paydet => paydet.PaymentID,
(stat, paydet) => new
{
InvoiceNo = paydet.Remarks,
paydet.Amount,
stat.Status,
paydet.PaymentCode
})
.Where(s => s.PaymentCode.ToLower() == "c")
.GroupBy(g => g.InvoiceNo)
.Select(lg =>
new
{
InvoiceNo = lg.Key,
TotalAmount = lg.Sum(w => w.Amount)
}).ToList();
【问题讨论】:
-
如果您使用的是 LINQPad,您可以单击结果后的 SQL 选项卡以查看 SQL 查询语法。
-
这就是问题所在。将其复制到 Linqpad 时出现错误
-
我认为它只接受不接受 lambda 方法作为输入
-
AFAIK 默认 LINQPad 不需要
db实例,它会自动分配[table_name] + s后缀,例如Trans_SAPStats。似乎 LINQPad 接受查询表达式关键字而不是 lambda 关键字。 -
是的,不幸的是,这是正确的。之后它只是将其转换为 lambda
标签: c# sql lambda linq-to-entities