Предложение Linq to SQL «IN» не работает

1

У меня 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>();

Но это дает мне ошибку:

Тело должно заканчиваться предложением select или group (at Any())

Пожалуйста, помогите мне, как я могу улучшить этот запрос???

Я новичок в Linq.

Теги:
linq
sql-server-2008-r2

2 ответа

0

Каждый вложенный запрос должен заканчиваться оператором select, чтобы получить результаты, которые вы ищете. Без выбора ничего не получит.

0

Прямой перевод с 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню