У меня 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.
Каждый вложенный запрос должен заканчиваться оператором 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.