Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用';在';实体框架中的SQL关键字?_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 如何使用';在';实体框架中的SQL关键字?

C# 如何使用';在';实体框架中的SQL关键字?,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,这是我的SQL命令 SELECT KEY,NAME from COMPANY c WHERE KEY IN (select KEY from USER_COMPANY where UserId = @UserId) order by NAME asc 所以我想把它转换成实体框架 我试着这样做 var userCompany = (from u in db.USER_COMPANY where u.UserId == UserId

这是我的SQL命令

SELECT KEY,NAME
from  COMPANY c 
WHERE     KEY IN (select KEY from USER_COMPANY  where UserId = @UserId)
order by NAME asc
所以我想把它转换成实体框架

我试着这样做

 var userCompany = (from u in db.USER_COMPANY
                         where u.UserId == UserId 
                         select(u.KEY));

            var user = (from c in db.COMPANY
                        where (c => userCompany.Contains(c.KEY)
                        select c);
但它不起作用


如何在实体框架中使用关键字中的SQL

我的理解是,从
.Contains()
中的
的翻译只是刚刚添加到EF6中

根据此工作项()和发行说明:改进了LINQ查询中Enumerable.Contains的性能

因此,请在EF6中查找它,尝试以下方法:

var query = from c in db.COMPANY
            where (from u in db.USER_COMPANY
                   where u.UserId == UserId
                   select u.KEY).Contains(c.KEY)
            orderby c.NAME
            select c.KEY, c.NAME;

请注意,此SQL查询具有完全相同的含义:

SELECT c.KEY, c.NAME
FROM COMPANY c
JOIN (SELECT DISTINCT KEY FROM USER_COMPANY where UserId = @UserId) u
ON U.KEY = C.KEY
ORDER BY c.NAME asc
所以你应该能够做到:

var userCompany = (from u in db.USER_COMPANY
                   where u.UserId == UserId 
                   select(u.KEY)).Distinct();

var result = from c in db.COMPANY
             join u in userCompany
             on c.KEY = u.KEY
             select new {c.KEY, c.NAME};

这帮不了什么忙,但我正在打电话,无法检查代码。你想看看LET关键字,“不工作”是什么意思?