日期:2014-05-20  浏览次数:20749 次

linq排序的问题,有示例数据,请看
姓名   时间   数值
tom 12:00 8.00
tom 12:05 8.50
tom 12:10 8.20

jak 12:00 8.10
jak 12:15 8.30


排序要求:

1. 按姓名,取每个姓名的离现在时间最近的记录 ,结果如下
tom 12:10 8.20
jak 12:15 8.30

2. 再将上面的记录按数值大小 从高到低排序 ,结果如下
jak 12:15 8.30
tom 12:10 8.20


用linq ,将上面2个步骤写在一起,该如何写

------解决方案--------------------
C# code


var query = list.GroupBy(x => x.姓名)
                .Select(g => g.OrderByDescending(x => x.时间).First())
                .OrderByDescending(x => x.数值);

------解决方案--------------------
把list改成db.Table就可以了。多看看例子+实践才能有更多收获。
------解决方案--------------------
按时间倒序,取第一个。