lamda list 分组,通过Lambda表达式使用两个以上的列进行分组

I have to convert my given linq query in lambda expression. i.e.

var scholars = (from scholar in db.Scholars

join suspension in db.Suspensions

on scholar.ID equals suspension.ScholarID

where suspension.StartDate >= startDate &&

suspension.EndDate <= endDate

group scholar by new { scholar.ID, scholar.FirstName, scholar.LastName }

into g

select new

{

FullName = g.Key.FirstName +" " + g.Key.LastName,

TotalSuspensionSum = g.Sum(x => x.Suspensions.Sum(y => y.SuspensionDays))

})

.ToList()

.OrderBy(x=> x.FullName);

解决方案

this is your lambda:

var scholars = db.Scholars.Join(db.Suspensions,

scholar => scholar.ID,

suspension => suspension.ScholarID,

(scholar, suspension) => new {scholar, suspension})

.Where(u => u.suspension.StartDate >= startDate &&

u.suspension.EndDate <= endDate)

.GroupBy(u => new { u.scholar.ID, u.scholar.FirstName, u.scholar.LastName })

.Select(u => new

{

FullName = u.Key.FirstName + " " + u.Key.LastName,

TotalSuspensionSum = u.Sum(x =>

x.scholar.Suspensions.Sum(y => y.SuspensionDays)

)

})

.OrderBy(x => x.FullName)

.ToList();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值