我对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 .. 这可以理解吗?如果没有,请让我再试一次解释:)
做一个>得到最大的金额是行不通的,因为我也有触发bool值的状态,1表示机器上有警报,0表示一切正常!
答案 0 :(得分:1)
我认为你需要从组表达式中删除Time字段,并在Select new中使用Max。