我在使用实体框架进行分组时遇到了这个问题。
.Net:4.5,EF:5.0,数据库:Oracle
我的问题是当我在服务器上分组并取回数据时,分组数据(实体列表)一遍又一遍地返回所有分组数据的第一条记录 - 但组 KEY 是正确的。
如果我没有按预期按记录返回进行分组,但我有一些分组要求,我的解决方法是……是的,这不会让我感觉很好,代码应该可以工作……但事实并非如此。
xD = string rest 是整数/字符串混合。
这是不起作用的代码:
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();