我有下表,其中我可以为一个名称设置多个时间戳。 我希望获得带有最大时间戳的名称(不同)。
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
我可以进行分组,现在需要从该组中选择具有最大值的元素。
var tempResult = data.GroupBy(x => x.Name);
我试过这样做,坚果只选择了日期时间,但我需要完整的项目:
foreach (var item in tempResult)
{
var maxItem = item.Max(x=>x.StartTime);
}
答案 0 :(得分:5)
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)
});
答案 1 :(得分:2)
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)。