This question already has answers here:
How to get first record in each group using Linq
(5个答案)
3年前关闭。
摘要:如何获取有序数据组中的前1个元素
我正在尝试按CarId字段进行分组,然后在每个组中,我想对降序的DateTimeStamp字段进行排序。所需的数据将是每辆车给我的最新DateTimeStamp,并且组中只有那个1。
我可以理解这一点,但是在从组中取出前1名并按DateTimeStamp desc对组进行排序时遇到了问题。
这是我在进行第一次小组操作后所拥有的:
我只希望有序组中的前1名
Brickwall:我停下来的地方是需要group by子句中的CarId和DateTimeStamp,以便以后按DateTimeStamp进行排序。不确定日期的排序应该在单独的函数中完成。
这将按
(5个答案)
3年前关闭。
摘要:如何获取有序数据组中的前1个元素
我正在尝试按CarId字段进行分组,然后在每个组中,我想对降序的DateTimeStamp字段进行排序。所需的数据将是每辆车给我的最新DateTimeStamp,并且组中只有那个1。
我可以理解这一点,但是在从组中取出前1名并按DateTimeStamp desc对组进行排序时遇到了问题。
这是我在进行第一次小组操作后所拥有的:
group 1
------------------------
CarId DateTimeStamp
1 1/1/2010
1 1/3/2010
1 3/4/2010
group 2
------------------------
CarId DateTimeStamp
2 10/1/2009
2 1/3/2010
2 9/4/2010
我只希望有序组中的前1名
group 1
------------------------
CarId DateTimeStamp
1 3/4/2010
group 2
------------------------
CarId DateTimeStamp
2 9/4/2010
Brickwall:我停下来的地方是需要group by子句中的CarId和DateTimeStamp,以便以后按DateTimeStamp进行排序。不确定日期的排序应该在单独的函数中完成。
最佳答案
data
.GroupBy(
x => x.CardId,
(x, y) => new {
Key = x,
Value = y.OrderByDescending(z => z.DateTimeStamp).FirstOrDefault()
}
);
这将按
CardId
对所有元素进行分组,然后按DateTimeStamp
(降序)对每个组的元素进行排序,然后缩减每个组以仅包含第一个元素。最后,它返回一个可枚举的“组”(带有引号,因为它们实际上是匿名类型而不是IGrouping
),其中每个组都有您要查找的一项。关于c# - 获取LINQ中群组的第一条记录? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3850429/
10-10 13:33