[英]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.