【问题标题】:Max of 2 columns with multiple group by lambda expression entity framework最多 2 列,由 lambda 表达式实体框架组成
【发布时间】:2017-05-03 18:39:38
【问题描述】:

我在 lambda 中有以下查询。

 var list = dbConnection.Form_Datas.Join(dbConnection.Forms, fd => fd.form_ID, f => f.form_ID,
            (fd, f) => new { form_data = fd, form = f })
            .Where(a => a.form_data.External_ID == personID)
            .Select(s => new FormDataDTO
            {
                FormID = s.form.form_ID,
                FormName = s.form.name,
                FormDataID = s.form_data.form_Data_ID,
                LastEdit = s.form_data.last_Edit,
                UserName = s.form_data.username
            }).OrderByDescending(o=>o.LastEdit).ToList();

我需要获取 LastEdit 和 FormDataID 列的最大值,因为 formID 和 FormName 对于一个 FormDataID 是重复的。用户名也应该从最大行值中显示。

提前致谢。

【问题讨论】:

    标签: linq c#-4.0 lambda entity-framework-6


    【解决方案1】:

    我相信您正在寻找的是GroupByclause。

    var list = dbConnection.Form_Datas
        .Join(dbConnection.Forms, fd => fd.form_ID, f => f.form_ID,
            (fd, f) => new { form_data = fd, form = f })
        .Where(a => a.form_data.External_ID == personID)
        .GroupBy(s => new 
        {
            FormID = s.form.form_ID,
            FormName = s.form.name,
            UserName = s.form_data.username 
        })
        .Select(s => new FormDataDTO
        {
            FormID = s.Key.form.form_ID,
            FormName = s.Key.form.name,
            FormDataID = s.Max(x => x.form_data.form_Data_ID),
            LastEdit = s.Max(x => x.form_data.last_Edit),
            UserName = s.Key.form_data.username
        }).OrderByDescending(o=>o.LastEdit).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多