我有这个简单的SQL查询:
select c.LastName, Sum(b.Debit)- Sum(b.Credit) as OpenBalance from Balance as b
inner join Job as j on (b.Job = j.ID)
inner join Client as c on (j.Client = c.ID)
Group By c.LastName
我试图将它转换为linq,就像这样:
from b in Balance
join j in Job on b.Job equals j.ID
join c in Client on j.Client equals c.ID
group b by new { c.LastName } into g
select new {
Name = c.Lastname,
OpenBalance = g.Sum(t1 => t1.Credit)
}
但是当我尝试在 LINQPad 中运行它时,我收到以下消息:
名称'c'不存在于 当前背景
并在c.Lastname
语句中突出显示select new
。
对此的任何帮助将不胜感激。 谢谢。
答案 0 :(得分:4)
嗯,您已将b
分组为c.LastName
。因此,在分组操作之后,您正在处理g
这是一个分组,其中元素类型是b
的类型,而键 type是c.LastName
的类型。很可能你只需要:
select new {
Name = g.Key,
OpenBalance = g.Sum(t1 => t1.Credit)
}
...但如果您需要了解c
的任何其他方面,则需要更改分组表达式。