LINQ group by,获得最新结果

时间:2011-05-09 08:41:07

标签: c# sql linq group-by

我对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表示一切正常!

1 个答案:

答案 0 :(得分:1)

我认为你需要从组表达式中删除Time字段,并在Select new中使用Max。