EntityFramework GroupBy实体类型

时间:2012-05-21 13:50:52

标签: c# entity-framework-4

我有一个基本实体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()'   方法,并且此方法无法转换为商店表达式。

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

2 个答案:

答案 0 :(得分:0)

如果预定义了类型,则可以使用Enumerable.OfType Method

var acs = context.A.OfType<AC>().Count();

答案 1 :(得分: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&lt; ...&gt;