2

我有一个基本实体 A 和派生实体:AA、AB、AC、AD

context.A.GroupBy(x => x.GetType()).Select(x => new { type=x.GetType(), count = x.Count() });

当然我得到错误:

LINQ to Entities 无法识别方法“System.Type GetType()”方法,并且此方法无法转换为存储表达式。

如何按类型对派生实体进行分组?

4

2 回答 2

0

如果类型是预定义的,您可以使用Enumerable.OfType 方法

var acs = context.A.OfType<AC>().Count();
于 2012-05-21T13:54:04.457 回答
0

在调用 GroupBy 之前,您需要将实体水合到内存中 - 这样 x.GetType() 调用将由 LINQ to Objects 而不是 LINQ to Entities 处理。尝试这样做:

context.A.ToList().GroupBy(x => x.GetType()).Select(x => new { type=x.Key, count = x.Count() });

我更改了它,因此您在选择中调用 x.Key 而不是 x.GetType() ,否则您将获得类似于 IGrouping<...> 的分组类型

于 2012-05-21T13:54:15.377 回答