EF: использование в операторе с одной таблицей - PullRequest
0 голосов
/ 25 июня 2019

С помощью моего EF5 я могу сделать это, например:

var result = (from p in entity.person
             join d in entity.dept on p.IdDept equals d.Id
             into dp from d in DefaultIfEmpty()
             select {
                 IdPerson = p.Id,
                 Depts = dp.Select(r => r.DepName).Distinct()
             }).ToList()

Это просто ужасный пример, но он работает хорошо, использование 'into dp' заставляет меня манипулировать результатом и создавать свои собственные.группирование без использования оператора 'group by'.

Теперь предположим, что у меня есть только одна таблица, и я хочу использовать оператор into:

var result = (from p in entity.person into pp ...
                 select {
                     something = pp.Select(r=> ...
             }).ToList()

здесь оператор into даетошибка компиляции при использовании одной таблицы:

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

Может кто-нибудь объяснить мне, почему?

1 Ответ

0 голосов
/ 25 июня 2019

Я не уверен, чего вы здесь добиваетесь, но оператор into обычно используется в linq для левых соединений, как показывает мой опыт.В вашем случае для одной таблицы вы можете снова напрямую использовать сущность, например:

var result = (from p in entity.person
             select {
                 something = entity.person.Select(r=> ...
         }).ToList()
...