获取LINQ中组的第一条记录?
简介:如何获得有序数据组中的前1个元素
我试图通过CarId字段进行分组,然后在每个组中,我想对DateTimeStamp字段降序进行排序。 所需数据将为每辆车提供最新的DateTimeStamp,并且只有该组中的1。
我可以达到这一点,但是在通过DateTimeStamp desc排除组中的前1名和排序组时遇到问题。
这是第一组操作后的内容 :
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
所有元素进行CardId
,然后按DateTimeStamp
(降序)对每个组的元素进行CardId
,然后将每个组削减为仅包含第一个元素。 最后,它返回一个可枚举的“组”(带有惊吓引号,因为它们实际上是一个匿名类型而不是IGrouping
),其中每个组都有您正在寻找的一个项目。
我发现自己更容易理解查询表达式语法:
from x in data group x by x.CarId into grp select new { CarId = x.CarId, Record = (from x in grp orderby z.DateTimeStamp descending).FirstOrDefault() };
试试这个?
上述就是C#学习教程:获取LINQ中组的第一条记录?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var latest = Group1.OrderByDescending(x=>x.DateTimeStamp).FirstOrDefault();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/957149.html