加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Entity Framework为每种类型的记录选择最新记录

发布时间:2020-12-16 02:03:07 所属栏目:百科 来源:网络整理
导读:我有一个名为values的表,如下所示: +-------+------------+-----------+----------+|Id |DateTime |SensorId |Value |+-------+------------+-----------+----------+ SensorId是传感器详细信息表的外键.此值表中将有10m条记录. 我可以运行此sql命令返回每
我有一个名为values的表,如下所示:

+-------+------------+-----------+----------+
|Id     |DateTime    |SensorId   |Value     |
+-------+------------+-----------+----------+

SensorId是传感器详细信息表的外键.此值表中将有10m条记录.

我可以运行此sql命令返回每个SensorId的最新记录,并在大约0.3秒内运行.

SELECT a.*
    FROM Values as a
    INNER JOIN (
        SELECT SensorId,MAX(ID) maxId 
        FROM Values
        GROUP BY SensorId
    ) b ON a.SensorId = b.SensorId 
        AND a.Id = b.maxId
ORDER BY a.SensorId ASC

如何在保持(或改进)性能的同时在c#应用程序中使用实体框架实现相同的输出?

解决方法

使用LINQ to Entities和lambdas,您可以这样做:

dataContext.Values.GroupBy(p => p.SensorId)
     .Select(p => p.FirstOrDefault(w => w.Id == p.Max(m => m.Id)))  
     .OrderBy(p => p.SensorId).ToList()

其中dataContext是ObjectContext类的实例. ToList()编译查询.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读