2017-05-03 52 views
0

我在lambda中有以下查询。由lambda表达式实体框架的多个组的最大2列

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和窗体名称是重复的一个FormDataID。此外,UserName应该从最大行值中显示。

在此先感谢。

回答

2

我相信你在找什么是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(); 
+0

这很好用...非常感谢,正是我需要的。 –

+0

@RohitSethi欢迎您,祝您未来的编码顺利 –