LINQ 分组依据,获取最新结果

本文关键字:获取 最新 结果 LINQ | 更新日期: 2023-09-27 17:55:23

我对 LINQ 相当陌生,所以这对你们中的一些人来说可能很容易,但我已经扯掉头发很长一段时间了:)

场景:我有一个包含 3 个具有不同端口的硬件模块的盒子。使用串行通信,我将模块中的数据提取到名为 CurrentData_Tables 的 SQL 表中因此,每次生产一个单位时,我的程序都会在表中写入一个条目,说明总和有多大。让我试着想象一下。

BoxID, ModuleID, PortNumber, Value, Time
1,     0A,       1,          {Value},     {Date}

该特定模块的读数上的时间完全相同,因此我想我可以按常量的数据进行分组,然后获取最新数据。这就是我到目前为止得到的:

SQLdbDataContext sqlDB = new SQLdbDataContext();
BindingSource bs = new BindingSource();
var Latest = from q in sqlDB.CurrentData_Tabels
             group q by new
             {
                 q.BoxID,
                 q.ModuleID,
                 q.PortNumber,
                 q.Time
             }
             into groupOrder
             select new
             {
                 BoxID = groupOrder.Key.BoxID,
                 ModuleID = groupOrder.Key.ModuleID,
                 Portnumber = groupOrder.Key.PortNumber,
                 Time = groupOrder.Key.Time
             };

这很好,我得到了我想要的所有结果......更重要的是,我不需要知道模块 0A、端口 1 上的读数在最新条目 3 之前已数到 2。这是可以理解的吗?,如果没有,请让我尝试再次解释:)

做一个>来获得最大的金额是行不通的,因为我也有触发布尔值的状态,1 表示机器上存在警报,0 表示一切正常!

LINQ 分组依据,获取最新结果

我认为您需要从组表达式中删除"时间"字段,并在"选择新"中使用最大值。