LINQ从组中选择最大日期的列
问题描述:
我有以下表格,我可以为单个名称指定多个时间戳记。 我想获得最大时间戳的名称(不同)。LINQ从组中选择最大日期的列
Id Name TimeStamp
66 Name1 19/10/2017
67 Name1 20/10/2017
68 Name1 21/10/2017
69 Name2 19/10/2017
70 Name2 20/10/2017
71 Name2 21/10/2017
72 Name2 22/10/2017
73 Name3 19/10/2017
74 Name3 20/10/2017
75 Name3 21/10/2017
我可以做group by,现在需要从该组中选择具有最大值的元素。
var tempResult = data.GroupBy(x => x.Name);
我试着这样做,螺母只选定的日期时间,但我需要的完整资料:
foreach (var item in tempResult)
{
var maxItem = item.Max(x=>x.StartTime);
}
答
var result = from d in data
group d by d.Name into g
select new { Name = g.Key, MaxDate = g.Max(s => s.StartTime) }
或者,如果你不喜欢,然后查询语法:
data.GroupBy(i => i.Name).Select(g => new
{
Name = g.Key,
MaxDate = g.Max(row => row.StartTime)
});
答
@ CodingYoshi的答案就足够了,如果你只需要Name和TimeStamp。 如果你想选择所有其他属性(完整对象),你可以使用它。
var tempResult = data.GroupBy(x => x.Name)
.Select(g => g.OrderByDescending(y => y.TimeStamp).FirstOrDefault());
,如果你喜欢的查询形式那么这
var tempResult2 = from x in data
group x by x.Name into g
select g.OrderByDescending(y => y.TimeStamp).FirstOrDefault();
在这里,你的情况,你可以访问所有属性(包括ID)。
看起来坚实清洁 –