[英]EntityFramework GroupBy Entity Type
我有一個基本實體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()',並且該方法無法轉換為商店表達式。
如何按類型對派生實體進行分組?
如果類型是預定義的,則可以使用Enumerable.OfType方法
var acs = context.A.OfType<AC>().Count();
您需要在調用GroupBy之前將您的實體存儲到內存中-通過這種方式,LINQ to Objects(而不是LINQ to Entities)將處理x.GetType()調用。 嘗試這樣做:
context.A.ToList().GroupBy(x => x.GetType()).Select(x => new { type=x.Key, count = x.Count() });
我更改了它,因此您在選擇中調用了x.Key而不是x.GetType(),否則您將獲得分組的類型,類似於IGrouping <...>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.