c# - 在 Linq 的 GroupBy 中取 1

标签 c# linq

<分区>

我有一个返回多条记录的查询。

例如:

  • 日期是 2 月 26 日,然后返回该日期的 10 条记录。
  • 日期是 2 月 27 日,然后返回该日期的 15 条记录。

Click to See Records

我使用了以下查询:

 var sData = vehicle.GsmDeviceLogs
                    .Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
                    .OrderBy(gs => gs.DateTimeOfLog)
                    .ToList();

现在,我只想获取每个日期的第一条记录。即

  • 日期是 2 月 26 日 - 1 条记录。
  • 日期是 2 月 27 日 - 1 条记录。

最佳答案

您在问题本身给出了答案,分组依据然后选择第一个。 从技术上讲,您可以将其转换为 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();

关于c# - 在 Linq 的 GroupBy 中取 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037928/

相关文章:

c# - 如何在c#中将服务安装为当前帐户

c# - 如何增加工具提示矩形的大小

c# - 在 WPF 表单上显示 HTML 片段

c# - 动态 LINQ - 与 GROUP BY/SELECT 语法作斗争

c# - 使用 Linq 获取每个客户昨天下的最后一个订单

c# - 如何从 LINQ to Entities 获取唯一值?

c# - 设置 DataLoadOptions 时,LINQ 返回错误的项目数

c# - 如何在 WebForms 中不刷新页面的情况下在服务器上触发事件

c# - 将值从 SQL 返回到 WPF 表单 - 我做得正确吗?

c# - IEnumerable 重复函数