我有一个查询,它返回许多记录。
例如:
我使用了以下查询:
var sData = vehicle.GsmDeviceLogs
.Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
.OrderBy(gs => gs.DateTimeOfLog)
.ToList();现在,我只想获取每个约会的第一个记录。即
发布于 2014-02-26 10:09:54
您在问题本身中给出了答案,按组,然后选择第一个。从技术上讲,您可以将其转换为linq如下:
var sData = vehicle.GsmDeviceLogs
.Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
.OrderBy(gs => gs.DateTimeOfLog)
.GroupBy(gs => gs.DateTimeOfLog)
.Select(gs => gs.First())
.ToList();发布于 2014-02-26 10:13:44
您应该按DateTimeOfLog.Date (它只返回包含日期部分的DateTime )对记录进行分组,然后通过一个Select获取每个组的第一个记录,如下所示:
var data = logs.Where( ... )
.GroupBy( l => l.DateTimeOfLog.Date )
.Select( g => new { Date = g.Key, Log = g.First() } );(我使用的是匿名类型;根据使用数据的方式,您可能更喜欢使用元组)
https://stackoverflow.com/questions/22037928
复制相似问题