我有一个基本实体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()' 方法,并且此方法无法转换为商店表达式。
如何按类型对派生实体进行分组?
答案 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;