Linq to SQL "IN"条款无效

本文关键字:quot 无效 IN Linq to SQL | 更新日期: 2023-09-27 18:06:57

我有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中翻译它。

阅读以下答案:

LINQ与SQL的"IN"关键字

我做了如下查询:

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>();

但是它给我的错误是:

body必须以select子句或group子句(at Any())结束

请帮助我如何改进这个查询??

I am new with Linq.

Linq to SQL "IN"条款无效

每个嵌套查询都需要以select语句结束,以获得您正在寻找的结果。如果没有select,将不会返回任何内容。

与SQL的直接转换将类似于这样:(我不做内部连接,但你可以很容易地弄清楚)

from a in context.Accounts
where a.Id == "57DB0B08-4C58-4301-AB92-090D4D9B7DA5" && 
   context.EH_PP_TeacherEvaluations.Join(.......)
        .Any(tv=>tv.EH_PP_TE_TeacherAcctID == a.Id)
select new {Id = a.Id, FullName = a.lastName + "," + a.firstName}

请注意,应该有更好的方法来做IN使用LINQ中的关系。