我在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也应该从最大行值显示。
提前致谢。
答案 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();