繁体   English   中英

LINQ group by,获取最新结果

[英]LINQ group by, getting the latest results

我对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
             };

完全可以,我可以得到所有想要的结果...而且,我不需要知道最新输入3之前模块0A端口1的读数已计为2。这可以理解吗? ,如果没有,请让我再试一次:)

进行>以获得最大的总和是行不通的,因为我还具有触发布尔值的状态,1表示机器上存在警报,0表示一切正常!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM