C# C LINQ使用Where连接表
我有一个包含两个表的实体对象:rest和rest\u服务 我想使用链式LINQ查询复制以下SQL查询,并将其放入十进制列表中C# C LINQ使用Where连接表,c#,linq,join,C#,Linq,Join,我有一个包含两个表的实体对象:rest和rest\u服务 我想使用链式LINQ查询复制以下SQL查询,并将其放入十进制列表中 SELECT a.rest_id FROM rest a, rest_services b WHERE a.rest_id = b.rest_id AND a.manager_id = 500 AND b.channel = 5 我已经回答了各种各样的问题 我在使用非链语法方面取得了一些小的成功,但我无法正确地将代码的第二部分放在何处 var Hot =
SELECT a.rest_id
FROM rest a, rest_services b
WHERE a.rest_id = b.rest_id
AND a.manager_id = 500
AND b.channel = 5
我已经回答了各种各样的问题
我在使用非链语法方面取得了一些小的成功,但我无法正确地将代码的第二部分放在何处
var Hot =
from h in db.rest
join hs in db.rest_services on h.rest_id equals hs.rest_id
where h.manager_id == 523 && hs.channel== 5
select h.rest_id
任何帮助都值得赞赏因为您只对从“rest”输出数据感兴趣,所以您所追求的SQL的更高性能版本应该是:
select a.rest_id
from rest a
where a.manager_id = 500
and exists (
select 0
from rest_services b
where a.rest_id = b.rest_id
and b.channel = 5
)
并且,使用“链”语法并输出十进制列表,我相信这可以转化为:
db.rest.Where(r =>
r.manager_id == 500 &&
db.rest_services.Any(
rs => rs.channel == 5 && r.rest_id == rs.rest_id
)
).Select(r => Convert.ToDecimal(r.rest_id))
.ToList();
+ + . 试一试,然后提问并分享你的代码。thanx mate。Donewhere h.manager_id==523&&x=>hs.channel==5← 把它放在连接之后,然后移除。在哪里。。。彻底地除非您不希望对输出进行投影,在这种情况下,请选择h.rest\u id而不是现在的选择。这是我的错误,因为我没有实际查看从您的尝试中复制的代码:修复:其中h.manager\u id==523&&hs.channel==5 var myListOfDecimals=Hot.ToList;我收到一个Select错误:bool不包含的定义Select@panosplat,只是我把括号弄错了。固定的