jiaoye6789
jiaoye6789
采纳率70.4%
2017-08-24 11:16 阅读 2.8k

LINQ左关联查询只取一条数据

 var deviceState = from di in _deviceInfoManager.FindList()
                              join ds in _deviceStateManager.FindList(0, a => a.OccurTime >= System.DateTime.Now.AddMinutes(-10), a => a.Time, false) on new { tokenID = di.TokenStationId, deviceNo = di.DeviceNo } equals new { tokenID = ds.TokenStationId, deviceNo = ds.DeviceNo } into dids
                              from ds in dids.DefaultIfEmpty()
                              select new B04DeviceState
                              {
                                  DeviceNo=di.DeviceNo,
                                  DeviceState=ds!=null?ds.DeviceState:(short)0
                              };
            return deviceState;

背景:di设备信息表,存储设备静态信息,ds设备状态表,存储设备状态信息,每1分钟插入一条记录。
问题:用设备信息表左联设备状态表最近10分钟的记录,存在网络断开,如果左联为空直接给状态等于0的,如果不为空,那么状态就等于最新一条记录的状态。怎么处理取最新的一条记录状态。

表信息:
设备信息表
DeviceNo DeviceName
1 A设备
2 B设备

状态表
DeviceNo state time
1 3 10:00
1 2 10:01
1 1 10:02

希望得到的结果集为

DeviceNo state
1 1
2 0

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

相关推荐