Linq to Entities считает подзапрос? - PullRequest
3 голосов
/ 24 августа 2011

Я пытаюсь сделать этот запрос в linq для сущностей (EF4)

select Header.Id, 
 (select count(*) 
  from Detail 
  where Header.Id = Detail.headerId) detailcount
from Header

Это не будет работать, потому что это не разрешено в EF:
(Заголовок и Подробности - EntityObjects)

from h in context.Header
select new Header
    {
        Id = h.Id,
        DetailCount = (from d in context.Detail 
                       where d.headerId = p.Id select d).Count()
    }

DetailCount - это новое свойство, которое я добавил к объекту сведений (частичный класс)

Приведенный выше запрос Linq не работает, поскольку я не могу проецировать на сопоставленную сущность:
Сущность не может быть создана в запросе LINQ to Entities

Есть ли другой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

ниже выполнит вашу задачу, потому что оба связаны между собой

from h in context.Header
select new Header
    {
        Id = h.Id,
        detailCount = h.Detail.Count()
    }
0 голосов
/ 06 января 2013

Я работал над этим, используя анонимные типы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...