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个回答

roderby以后调用first()

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐