C# C LINQ使用Where连接表

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 =

我有一个包含两个表的实体对象: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 =
                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,只是我把括号弄错了。固定的