最多2列,具有多个由lambda表达式实体框架组成的组

时间:2017-05-03 18:39:38

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

我在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是重复的。 UserName也应该从最大行值显示。

提前致谢。

1 个答案:

答案 0 :(得分:3)

我相信你要找的是GroupBy条款。

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