C# 如何使用';在';实体框架中的SQL关键字?
这是我的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
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关键字,“不工作”是什么意思?