Linq to Entities统计子查询?

时间:2011-08-24 12:02:16

标签: c# linq entity-framework

我正在尝试在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是我在Detail Entity(partial class)上添加的新属性

上面的Linq查询不起作用,因为我无法投影到映射的实体:
The entity cannot be constructed in a LINQ to Entities query

还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

下面的

将完成任务,因为两者都是相关实体

from h in context.Header
select new Header
    {
        Id = h.Id,
        detailCount = h.Detail.Count()
    }

答案 1 :(得分:0)

我通过使用匿名类型解决了这个问题。