Я пытаюсь написать LINQ эквивалент
SELECT C1, C2, C3
FROM T1
WHERE T1.C4='xyz' AND
EXISTS (SELECT 1 FROM T2
WHERE T1.C17 = T2.C24)
ORDER BY C3
Я использую EF CTP 5, поэтому у меня есть переменная DBContext с именем dbc, которая включает в себя объекты DBSet T1s и T2s, основанные на POCO T1и T2.
В LINQ я пишу
DIM IND = From i In dbc.T1s
Where i.C4 = "xyz"
And (From t In dbc.T2s Where i.C17 = t.C24).Any
Select i.C1, i.C2, i.C3
Order By C3
Запустив запрос, я получаю сообщение об ошибке "Невозможно создать постоянное значение типа 'T2'. Только примитивные типы (', такие какInt32, String и Guid ') поддерживаются в этом контексте. "
Когда я опускаю внутреннее выражение (третья строка в коде LINQ), запрос выполняется нормально.
Я попытался изменить порядки внутреннего сравнения, чтобы они были t.C24 = i.C17, без эффекта.
Итак, что происходит, и как я могу это исправить?