簡體   English   中英

EntityFramework GroupBy實體類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM