加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Group通过Lambda表达式使用两列以上的列

发布时间:2020-12-15 19:57:42 所属栏目:百科 来源:网络整理
导读:我必须在lambda表达式中转换我给定的 linq查询.即 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 grou
我必须在lambda表达式中转换我给定的 linq查询.即

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);

解决方法

这是你的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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读