エンティティフレームワークでグループ化を行っているときに、この問題に遭遇しました。
.Net: 4.5、EF: 5.0、データベース: オラクル
私の問題は、サーバーでグループ化してデータを取得したときでした。グループ化されたデータ (エンティティのリスト) は、グループ化されたすべてのデータに対して最初のレコードを何度も返していましたが、グループ KEY は正しかったです。
レコードごとにグループ化を行わないと、期待どおりに戻りますが、グループ化の要件がいくつかあり、回避策は...ええ、気分が良くなく、コードが機能するはずです...しかし、そうではありません。
xD = 文字列残りは整数/文字列ミックスです。
動作しなかったコードは次のとおりです。
db.ENTITY_NAME
.Where(x =>
wantedGs.Contains(x.G) &&
wantedAs.Contains(x.A)
)
.GroupBy(x => x.D)
.ToList()
.Select(x => x.FirstOrDefault())
.Select(x => new MyEntity
{
A = x.A,
B = x.B,
C = x.C,
E = x.E,
D = x.D,
F = x.F,
G = x.G
})
.ToList();
これが私がやりたいことをなんとかした回避策です:
db.ENTITY_NAME
.Where(x =>
wantedGs.Contains(x.G) &&
wantedAs.Contains(x.A)
)
.Select(x => new
{
x.A,
x.B,
x.C,
x.D,
x.E,
x.F,
x.G
})
.ToList()
.GroupBy(x => x.D)
.Select(x => x.FirstOrDefault())
.Select(x => new MyEntity
{
A = x.A,
B = x.B,
C = x.C,
E = x.E,
D = x.D,
F = x.F,
G = x.G
})
.ToList();