【发布时间】:2014-06-05 12:29:17
【问题描述】:
我的 SQL 查询为:
select a.id, a.lastName + ',' + a.firstName FullName
from account a
where a.id in(
select a.EH_PP_TE_TeacherAcctID
from EH_PP_TeacherEvaluations a
inner join EH_PP_TeacherEvaluationStatusesRefTable b
on a.EH_PP_TESRT_TeacherEvalStatusIDEH = b.EH_PP_TESRT_TeacherEvalStatusID
where b.EH_PP_TESRT_TeacherEvalStatusValue = 1)
and a.id = '57DB0B08-4C58-4301-AB92-090D4D9B7DA5'
我想用 LINQ 翻译它。
看完下面的回答:
What is LINQ equivalent of SQL’s "IN" keyword
我查询如下:
List<Entity.Observations> outerList = new List<Entity.Observations>();
outerList = (
from a in context.accounts
where
(
from c in context.EH_PP_TeacherEvaluations
join b in context.EH_PP_TeacherEvaluationStatusesRefTables on c.EH_PP_TESRT_TeacherEvalStatusIDEH equals b.EH_PP_TESRT_TeacherEvalStatusID
where b.EH_PP_TESRT_TeacherEvalStatusValue == 1
).Any()
select new Entity.Observations
{
EH_PP_TeacherAcctId = Convert.ToString(a.account.id)
}
).ToList<Entity.Observations>();
但它给我的错误是:
正文必须以 select 子句或 group 子句结尾(在 Any())
请帮助我如何改进这个查询???
我是 Linq 的新手。
【问题讨论】:
-
您需要在
where子句内的查询中进行选择。 LINQ 查询语法总是需要select。 -
Any()大致翻译为 SQL 中的EXISTS关键字。如果你想要IN,你需要使用Contains()。 -
@DanielKelley 但他们还没有写 select inside where over here stackoverflow.com/questions/8255205/… 因此我没有这样做
-
@BearGrylls 很有趣。但是,信息很明确。如果您想尝试更改代码,这取决于您。
标签: c# sql .net linq sql-server-2008-r2