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

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() });

select で x.GetType() ではなく x.Key を呼び出すように変更しました。それ以外の場合は、IGrouping<...> のようなグループ化のタイプを取得します。

于 2012-05-21T13:54:15.377 に答える
0

タイプが事前定義されている場合は、Enumerable.OfType メソッドを使用できます

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