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问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linq左关联查询只取最新的一条数据
rnrn```rn var deviceState = from di in _deviceInfoManager.FindList()rn 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 didsrn from ds in dids.DefaultIfEmpty()rn select new B04DeviceStatern rn DeviceNo=di.DeviceNo,rn DeviceState=ds!=null?ds.DeviceState:(short)0rn ;rn return deviceState;rn```rnrn背景:di设备信息表,存储设备静态信息,ds设备状态表,存储设备状态信息,每1分钟插入一条记录。rn问题:用设备信息表左联设备状态表最近10分钟的记录,存在网络断开,如果左联为空直接给状态等于0的,如果不为空,那么状态就等于最新一条记录的状态。怎么处理取最新的一条记录状态。rnrn表信息:rn设备信息表rnDeviceNo DeviceNamern 1 A设备rn 2 B设备rn rn状态表rnDeviceNo state timern 1 3 10:00rn 1 2 10:01rn 1 1 10:02rn rn希望得到的结果集为rnrnDeviceNo statern 1 1rn 2 0rnrn
LINQ,一对多左联,只取一条数据
AID ANAME n 1 ONEnnBID AID BNAME n 1 1 On 2 1 Tn n 我只要取出 AID BID BNAME 一条数据即可n 1 1 On
mybatis 关联查询只返回一条数据
mybatis 关联查询只返回一条数据,主要原因是主键id映射错误。也就是关联的表的主键名称相同,只要给主键id取别名就可以了。
左连接的表中有多条数据如何只取一条
表a,有字段id,表b有字段cid,adddate,a表中的id对应b表中的cid,a表左连接b表,现在a中一条数据对应b中多条数据,如何只取b表中adddate最大的一条
多表关联查询,如何只取其中一条记录?
语句如下:rninsert into abcrnselect a.id, b.name, c.dept rn from a, b, crn where b.id=a.id and b.type=1rn and c.id=a.idrnrn其中在a、c、abc三个表中id都是主键,但在表b中主键是id+type+name,就是说以id和type为条件会查得多条结果,但我只需要从中任意一条记录即可插入abc表,因为abc表中id是主键。rnrn我试着用left join来关联b表,好像还是不行,请大家指点。谢谢。
oracle 分组查询取第一条数据 关联查询 最后一条数据
select t.name1,t.name2,t.zx from (select row_number()over(partition by name1 order by zx desc)rn, test.* from test)t where t.rn=1;
CTE递归只取第一层的一条数据(关键是只取一条数据想不到怎么操作)
[code=sql]rn;with t as (rn select 1 as id, null as pid, value = 1.1rn union all rn select 2 as id, 1 as pid, value = 1.3rn union all rn select 2 as id, 1 as pid, value = 1.0rn union all rn select 2 as id, 1 as pid, value = 2.1rn union all rn select 2 as id, 1 as pid, value = 2.9rn union all rn select 2 as id, 1 as pid, value = 0.9rn union all rn select 7 as id, 2 as pid, value = 2.1rn union all rn select 7 as id, 2 as pid, value = 2.9rn union all rn select 7 as id, 2 as pid, value = 0.9rn rn union allrn select 3 as id, null as pid, value = 2.1rn union all rn select 5 as id, 3 as pid, value = 3.3rn union all rn select 5 as id, 3 as pid, value = 1.0rn union all rn select 5 as id, 3 as pid, value = 9.1rn union all rn select 5 as id, 3 as pid, value = 2.9rn union all rn select 5 as id, 3 as pid, value = 0.9rn)rn,vs as (rn select * from t where pid is nullrn union all rn select a.* from t a inner join vs b on a.pid = b.id where b.value < a.value and b.pid is nullrn)select * from vsrn[/code]rn[img=https://img-bbs.csdn.net/upload/201902/28/1551358162_706775.png][/img]rn[code=sql]rn--RESULTrnid pid valuern--1 NULL 1.1rn--3 NULL 2.1rn--5 3 3.3rn--2 1 1.3rn[/code]rn如题,取截图的结果任意一条数据(图中蓝色背景的1,2,[color=#0000FF]3[/color],4,5,[color=#0000FF]6[/color],7,8),不一定是3,6编号的数据,只要任意一条,因为数据量大,如果全部数据取出来再取任意一条数据太费时间,又不想写游标和分步处理(先临时表再一条条处理),能否用CTE语法一条语句到位?rn
多行数据比较,只取其中一条
各位大哥们,我正在做关于流程的报表,现在问题来了.rn同一张表单在流程中每一关都会有一条记录,我先在想要得到受理人的相关信息.数据如下:rnrn 表单单号 关号 受理人 ……rn 01 0100 Arn 01 0200 Brn 01 0200 Crn 01 1000 Drn 02 0200 Brn 02 1000 Ern 03 0100 E rnrn因为表单还在流程中,尚未结案,所以有的关号信息没有。还有就是表单有多种流程!表单01 和03 是A流程,0100-0200(此关有两个人处理,谁都可以审批,流程往下走)-1000;表单02是B流程,0200-1000。rn现在我想得到0200关的数据,如果没0200关的信息,则取0100关的数据。结果数据如下rn rn 表单单号 关号 受理人 ……rn 01 0200 B/Crn 02 0200 Brn 03 0100 Ernrn希望各位能帮帮我,3KS!rnrn
两条连续相同的数据只取一条
[img=https://img-bbs.csdn.net/upload/201708/15/1502791008_149865.png][/img]rnrn两个连续相同的红框中的单价只取一个,结果希望得到的数据就是取出绿框中的数据。rn谢谢,非常感谢!!!
比较数据,只取符合要求的一条
表staffrnid fenshu xiuxi bumenrn1 80 0 2rn2 80 1 2rn3 90 2 2rn4 60 0 3rnrn要求:1.同一部门(bumen)的只显示一条数据rn 2.取值顺序,如果休息(xiuxi)日大于0的,取分数(fenshu)高的rn 3.如果休息(xiuxi)日小于0,取分数(fenshu)低的rnrn如果只能以上数据,结果会是这样rnrnid fenshu xiuxi bumenrn3 90 2 2rnrn求SQL代码或者PHP代码都可以。
linq随机取数据
var gg=(from c in db.computer_view orderby System.Guid.NewGuid() where c.distinguish == "bjb" select c).Take(6);rnrn怎么不管用,求指教
linq循环取数据
[code=C#]//最小的id rnvar resMin = dc.VM_SYS_Menu.Select(c => c.MenuID ).Min();rn//得到大的idrnvar resMax = dc.VM_SYS_Menu.Select(c => c.MenuID ).Max();rn//最小的idrnint MinID = Convert.ToInt32(resMin);rn//最大的idrnint MaxID = Convert.ToInt32(resMax);rnvar resAll = (from a in dc.VM_SYS_Menu select new a.MenuID );rn想得到所有的MenuID,跟maxid,minid比较,rn如果循环获取到所有的MenuID[/code]rn
mybatis一对多关联查询子表只返回一条数据
注意:在mybatis的部分版本中发现当两个表的主键列名一致,比如都是id时,配置关联查询时子表只能返回1条数据,在这里提供一种简单的方法,避免大量修改文件,由于我的源码不便公开,请大家看这里的源码:http://blog.csdn.net/qinshijangshan/article/details/60955096###;[sql] view plain copy-- 用户表  CREATE ...
如何只取一条记录
[code=SQL]create table #gg(商品ID varchar(10),商品名称 varchar(30),规格 varchar(20),单位 varchar(10))rngorninsert into #ggrnselect '40666','白矾','10g*25','g'rnunion allrnselect '40667','白果','5g*40','g'rnunion allrnselect '40668','白果','10g*25','g'rnunion allrnselect '40668','白果(10g)','g','g'rnunion allrnselect '40669','白花蛇','5g*40','g'rnunion allrnselect '40669','白花蛇(5g)','g','g'[/code]rnrn现在的问题是有的一个商品ID对应多个商品名称。我现在只要每个商品ID取一条记录就行。语句要怎样写呢?rn我要的结果是这样:rn40666 白矾 10g*25 grn40667 白果 5g*40 grn40668 白果 10g*25 grn40669 白花蛇 5g*40 grnrnrnrn
重复数据 怎么只取一条..
[code=sql]rnSELECT pppp.pztait AS 付款方式, Order_detail.Gds_Name AS 商品名称, rn Order_detail.Member_Account AS 用户名, Order_detail.Total_Money AS 总金额, rn Order_detail.Discount, [Order].Goods_Pay AS 物流处理费,rn [Order].Total_Money AS 付款金额, [Order].Receive_Name AS 姓名, rn [Order].Receive_Addr AS 地址, [Order].Receive_Tel AS 电话,rn [Order].Deliver_Date AS 订购时间, [Order].NornFROM pppp INNER JOINrn [Order] ON pppp.id = [Order].Pay_Method INNER JOINrn Order_detail ON [Order].No = Order_detail.Order_Norn rn[/code]rnrn其中 Order_No 有重复rnrnOrder_No Gds_Namern123 产品1crn654 产品2rn123 产品3aaarn123 产品5aaarnrn希望最终结果 只取Order_No 重复数据其中一条 可随机.rn结果为rn654 产品2rn123 产品3aaarnrn
SQL只取一条记录
[code=C#]rnselect PCcode,PCFuName,PCShName,PCWholeName,rnPCType from v_bk_PortCity order by PCWholeNamern结果如下:rnPCcode PCFuName PCShName PCWholeName PCTypern368 AAL 奥勒松 Aalesund Prn651 AAL 奥勒松 Aalesund Crn322 AAR 奥胡斯 Aarhus Prn606 AAR 奥胡斯 Aarhus Crn232 ABR 阿伯丁 Aberdeen Crn256 ABR 阿伯丁 Aberdeen Prn987 AED 阿伯丁 Aberdeen Crn241 ABI Abilene Abilene Crn431 AUH 阿布扎比 Abu Dhabi Prn1294 AUH 阿布扎比 Abu Dhabi Crnrn想要的结果:rnPCcode PCFuName PCShName PCWholeName PCTypern368 AAL 奥勒松 Aalesund Prn322 AAR 奥胡斯 Aarhus Prn232 ABR 阿伯丁 Aberdeen Crn987 AED 阿伯丁 Aberdeen Crn241 ABI Abilene Abilene Crn431 AUH 阿布扎比 Abu Dhabi Prnrn就是只要PCFuName PCShName 相同的只取一条记录rn[/code]
只取最后一条记录
共有三条记录,页面上也打印了三条记录,但是打印的是最后一条记录
左外关联查询
 A表的结构以及数据如下:   B表的结构以及数据如下:     语句一:   select sum(num) from B b left outer join A a on B.a_id = A.a_id where a.status = 1 执行后结果为 21     语句二: select sum(num) from B b left outer join ...
linq关联查询问题,急.....
DataTable dt1=new DataTable();rn DataTable dt2 = new DataTable();rn....rn//DataTable 赋值,都有一个主键IDrn....rn var result = from a in dt1.AsEnumerable()rn join b in dt2.AsEnumerable()rn on a.Field("ID") equalsrn b.Field("ID") rn select a;rn用上面的语句只能查出一个表里的数据,如果用select new 能完成两个表数据的查询,rn但是我要使用的查询是字段不确定rnrnrn就像完成sql语句:rnselect * from dt1 a inner join dt2 brn不管a\b表中数据字段,都能查询全部数据
使用LINQ 技术关联查询多表数据
本课程以实例讲解LINQ(Language Intergrated Query)语言集成查询技术的使用。
ORACLE 取一条数据
问题是这样的,我的表中现在有100条数据,我需要取第50条数据,现在只能取得第一条是比较有效的rn用rownum=1;rn但是如果要取得中间的怎么弄,不能增加栏位。求高人指导
DiscuzX2 取一条数据
  方法:DB::fetch_first();       if($_GET['username']) { $member = DB::fetch_first(&quot;SELECT uid FROM &quot;.DB::table('common_member').&quot; WHERE username='$_GET[username]' LIMIT 1&quot;); if(empty($member)) ...
只取目录数据
\\192.168.0.2\\test\1.mdbrn这个串如何取得\\192.168.0.2\\test,只取目录
MySQL的左连接查询,只取出最大的一条数据
今天有个需求,是通过两张表进行查询。一对多的关系。通过一个主键,取出其中的一条。 开始以为还好,直接用用了left join on进行查询。却发现了问题所在。 其他的好弄。 开始的写法借鉴这篇博客: https://bbs.csdn.net/topics/350134616?tdsourcetag=s_pcqq_aiomsg 没能解决问题,因为取出的数据中不是我想要的最新的,而是最小的ID的那个...
关于LINQ取数据的疑问
大家好。LINQ或者是4.0推出的实体模型都是实现了ORM对应。我想问下执行的机制,是先取出数据再查询呢还是把LINQ语句转成了查询语句再执行。比如rn[code=C#]rnpublic IQueryable GetAll()rnrnreturn db.articles;rnrn[/code]rn全部数据取出再操作未免效率低了,比如还有where条件。应该是先生成SQL语句再执行吧?
linq实现取List中每个分类的一条随机数据
比如 :集合中有 a,b,c,d四个分类,每个分类有n条数据,每次随机取4条数据,每个分类一条,用linq怎么实现呢?
如何用LINQ只查询一条记录?
下面这段代码的目的为查询满足条件的记录,并返回它。rn如果有多条满足,只返回第一条;如果没有满足条件的记录,则返新创建的一个MSG_DESC对象。rn现在的问题是当执行msgDesc.Count()时,就需要查询出所有的结果。这样势必会造成效率低下,因为我只需要第一条记录就可以了。rn请问该如何做?rnrn[code=C#] var msgDesc = from item in _MsgListrn where item.MD_TABLE.Equals("tableset") && item.MD_FIELD.Equals("ID") && item.MD_VALUE.Equals(_id.ToString())rn select item;rn if (msgDesc.Count() == 0)rn return new MSG_DESC();rn elsern return msgDesc.First();[/code]
左连接的表中有多条数据如何只取按时间排序最大的一条
表a,有字段id,表b有字段cid,adddate,bname,id,a表中的id对应b表中的cid,a表左连接b表,现在a中一条数据对应b中多条数据,如何只取b表中adddate最大的一条
linq查询根据list的一个字段去重,某个字段数据相同的只取一条
//筛选同一分钟内的数据,只取一条 var zb_wb = (from a in list_pos from b in list_wb where b.YCWHJL_QSSJ.Value.ToString("yyMMddHHmm") == a.Time.ToString("yyMMddHHmm")...
linq 左连接
var list = from a in S_Userlist join b in S_ToexamineLoglist on a.ID equals b.UserID into a_b from subpet in a_b.DefaultIfEmpty() ...
linq to Entities 的左连接
我想问下linq to Entities 的做连接怎么写 急!!!!!!!!!!!!!!!!
linq 两个左链接
from a in _DlrInterviewService._repository.Get(awhere)rn join b in _DlrEmplGuardianService._repository.Get()rn on a.Emplid equals b.Emplid into bEmplidrn from EmplGuardian in bEmplid.DefaultIfEmpty()rn join d in _DlrTypeShowService._repository.Get(o=>o.ColumnName== "dlr_empl_guardian_type")rn on EmplGuardian.Typea equals d.Typea into dTypern from TypeShow in dType.DefaultIfEmpty()rna是主表,b是串联的表,c是为了让Typea 显示成中文rn如果b串的是空,EmplGuardian.Typea就会报错rn
linq 左连接怎么改
var Query = (from adviceNoteInstance in adviceNoteEarnestMoneyTableEntities.AdviceNoteEarnestMoneyInstance.Where(a => a.AdviceID == AdvID && (a.AdviceState != 40 || a.UserName == "-"))rn select newrn rn adviceNoteInstance.InstanceID,rn adviceNoteInstance.AdviceID,rn adviceNoteInstance.AdviceState,rn adviceNoteInstance.FState,rn adviceNoteInstance.UserName,rn adviceNoteInstance.CreateTime,rn adviceNoteInstance.FinishedTime,rn MaxInstanceID = adviceNoteEarnestMoneyTableEntities.AdviceNoteEarnestMoneyInstance.Where(a => a.AdviceID == AdvID && (a.AdviceState != 40 || a.UserName == "-")).Max(a => a.InstanceID)rn ).OrderBy(a => a.InstanceID);rnrndbo.AdviceNoteTable 左联接上面的主表 (adviceNoteInstance.AdviceID 关联字段rn) 怎么改 我不会lambda的写法
Linq左链接查询
第一次用到linq链接查询,mark一下;cms.MemberShipId是MemberShip的主键ID var list = from ms in dbContext.MemberShip                join cms in dbContext.CustomerMemberShip               on new { aa = ms.Id, bb = custome...
linq的左连接
实现背景:查询学生学习情况,左连接,如果没有该学生的学习情况,也要查询出来 首先查询出这个视频学习情况的信息, 进行左连接,三目运算符判断该学员是否已经学习该视频,如果没有,则学习时长为0,因为是左连接,如果该学生没有该视频的学习情况信息,即可tableone没有他的学习数据,也可以进行查询出来 最后成果展示: ...
LINQ左联接
var list = (from objSubject in listSubjectDetail join objBalance in listBalance on objSubject.AccountSubjectDetail equals objBalance.GameChannelName
linq 左连接的问题
A表:传感器设备表rnEquId: 设备IDrnEquName:设备名称rnrnB表:每10秒记录一次传感器数据值rnDataId :数据IDrnEquId:传感器设备ID(外键)rnValue:传感器值rnInsertTime:记录时间rnrn要求:界面上10秒刷新一次数据,显示传感器名称及实时数据,实时数据是指当时时间过去的30秒内数据的平均值,如果过去30秒内都无数据则显示“已掉线”,否则显示平均值。rnrnrnrn求一条简单的linq语句或者lambda表达式,尽量只访问一次数据库,查询速率快。
linq左外联问题
[code=C#] var query = from board in dc.Boardrn join user in dc.User on board.username equals user.username into gjrn from subuser in gj.DefaultIfEmpty()rn select newrn rn UID = board.UID,rn UserName = board.username,rn UserUID = (subuser == null ? -1 : subuser.UID),rn Content = board.content,rn Date = board.datern ;[/code]rnrn查询board表,根据board中的username查询user表中的UID,最终得到UserUID,若user表中不存在需要查询的username,则UserUID=-1rnrnrn但是最终得到结果不包含user中没有username的项rnrn相当于执行了内联表查询rnrn请问哪出错了?
linq 左连接 求助
现在有两个表,一个商品表,有id 和名称。一个商品标签表,有id和标签。rn现在想要查商品名称和商品标签符合要求的。rn自己写的linq是这样:rn[code=C#]rnvar products= (from p in context.Productrn join pl in context.ProductLabelrn on p.ProductId equals pl.ProductId into gorn from g in gorn where p.ProductName.Contains(data)||g.Label.Contains(data)rn select g.Product).Distinct();rn[/code]rn但是我用profiler查了下发现不是左连接而是inner joinrn那么linq的左连接应该怎么写呢?rnrn附个创建表的sqlrn[code=SQL]rncreate table product (product_id varchar(10),product_name varchar(20))rninsert into product values('001','纯银手镯')rninsert into product values('002','名族手镯')rninsert into product values('003','印巴风情手镯')rninsert into product values('004','泰国手镯')rninsert into product values('005','波西米亚手镯')rninsert into product values('006','彩绘手镯')rnrncreate table product_lable (product_id varchar(10),product_lable varchar(20))rninsert into product_lable values('001','年轻')rninsert into product_lable values('001','时尚')rninsert into product_lable values('003','个性')rninsert into product_lable values('004','时尚')rninsert into product_lable values('004','年轻')rninsert into product_lable values('004','活力')rngornrnrndrop table productrndrop table product_lablern[/code]
linq 左连接问题
var query = from g in wfEntities.prepayrn join p in wfEntities.project on g.ProjectCode equals p.Codern join u in wfEntities.userinfo on g.PrepayUser equals u.IDrn join h in wfEntities.userinfo on g.HandlerUserId equals h.ID into ghtrn from gh in ght.DefaultIfEmpty()rn select new PrepayInfoDTOrn rn Id = g.Id,rn Amount = g.Amount,rn PrepayCode = g.PrepayCode,rn PrepayDate = g.PrepayDate,rn PrepayUser = g.PrepayUser,rn PrepayUserName = u.FullName,rn HandlerUserId = gh == null ? 0 : gh.ID,rn HandlerUserName = gh == null ? "" : gh.FullName,rn ProjectCode = g.ProjectCode,rn ProjectName = p.Name,rn UseNotes = g.UseNotes,rn DataState = g.DataStatern ;rn这样子出现了“LINQ to Entities 不识别方法“System.Collections.Generic.IEnumerable”这样的问题?有人知道吗?
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件