首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linq中取1内GroupBy

在Linq中取1内GroupBy
EN

Stack Overflow用户
提问于 2014-02-26 10:03:52
回答 2查看 144关注 0票数 4

我有一个查询,它返回许多记录。

例如:

  • 日期是26-2月b,然后10条记录为这个日期返回。
  • 日期为2月27日至2月27日,届时将返回15条记录.

单击以查看记录

我使用了以下查询:

代码语言:javascript
复制
 var sData = vehicle.GsmDeviceLogs
                    .Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
                    .OrderBy(gs => gs.DateTimeOfLog)
                    .ToList();

现在,我只想获取每个约会的第一个记录。即

  • 日期是26-2月1日的记录。
  • 日期是2月27日至2月1日。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 10:09:54

您在问题本身中给出了答案,按组,然后选择第一个。从技术上讲,您可以将其转换为linq如下:

代码语言:javascript
复制
var sData = vehicle.GsmDeviceLogs
              .Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
              .OrderBy(gs => gs.DateTimeOfLog)
              .GroupBy(gs => gs.DateTimeOfLog)
              .Select(gs => gs.First())
              .ToList();
票数 7
EN

Stack Overflow用户

发布于 2014-02-26 10:13:44

您应该按DateTimeOfLog.Date (它只返回包含日期部分的DateTime )对记录进行分组,然后通过一个Select获取每个组的第一个记录,如下所示:

代码语言:javascript
复制
var data = logs.Where( ... )
               .GroupBy( l => l.DateTimeOfLog.Date )
               .Select( g => new { Date = g.Key, Log = g.First() } );

(我使用的是匿名类型;根据使用数据的方式,您可能更喜欢使用元组)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22037928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档