分组依据、求和、加入Linq
我有一个简单的sql查询:分组依据、求和、加入Linq,linq,Linq,我有一个简单的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
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”
当前上下文
并在selectnew
语句中突出显示c.Lastname
在此方面的任何帮助都将不胜感激。
谢谢。好吧,您已经按照
c.LastName
对b
进行了分组。因此,在分组操作之后,您将处理g
,这是一个分组,元素类型为b
,键类型为c.LastName
。很可能您只需要:
select new {
Name = g.Key,
OpenBalance = g.Sum(t1 => t1.Credit)
}
。。。但是,如果您需要了解
c
的任何其他方面,则需要更改分组表达式。那么,您已经按照c.LastName
对b
进行了分组。因此,在分组操作之后,您将处理g
,这是一个分组,元素类型为b
,键类型为c.LastName
。很可能您只需要:
select new {
Name = g.Key,
OpenBalance = g.Sum(t1 => t1.Credit)
}
。。。但是,如果需要了解c
的任何其他方面,则需要更改分组表达式