List 具有group by和.NET核心的Linq查询
我想做一个简单的查询。我想要一个包含字符串和Guid的列表,以及一个包含小数和字符串的子列表。我的查询是这样的,但当转换到实体框架时,它总是出错,我做错了什么 提前谢谢List 具有group by和.NET核心的Linq查询,list,linq,group-by,entity-framework-core,List,Linq,Group By,Entity Framework Core,我想做一个简单的查询。我想要一个包含字符串和Guid的列表,以及一个包含小数和字符串的子列表。我的查询是这样的,但当转换到实体框架时,它总是出错,我做错了什么 提前谢谢 var a = ( from c in DbContext.CC join icc in DbContext.ICC c.Id equals icc.CCId join i in DbContext.I on icc.IId equals i.Id
var a = ( from c in DbContext.CC
join icc in DbContext.ICC c.Id equals icc.CCId
join i in DbContext.I on icc.IId equals i.Id
join p in DbContext.P on i.PId equals p.Id
select new
{
GuidId = p.Id,
StringN = p.StringN,
CCString = c.CCString ,
DecimalValue = icc.DecimalValue
}).GroupBy(x => new { x.GuidId , x.StringN }).
Select(x => new Model
{
GuidId = x.Key.GuidId ,
StringN = x.Key.StringN ,
Values= x.Select(y => new OtherModel
{
DecimalValue = y.DecimalValue ,
CCString = y.CCString
})
}
).OrderBy(x => x.StringN );
错误:
LINQ表达式(GroupByShapeExpression:键选择器:新建{
GuidId=(p.Id),
StringN=(p.Name)
},
ElementSelector:新建{
GuidId=(ProjectionBindingExpression:GuidId),
StringN=(ProjectionBindingExpression:StringN),
CCString=(ProjectionBindingExpression:CCString),
DecimalValue=(ProjectionBindingExpression:DecimalValue)
}
)
.选择(y=>new OtherModel{
小数点=y.小数点,
CCString=y.CCString
}
)“无法翻译。以可以翻译的形式重写查询,或者通过插入对AsEnumerable()、AsAsAsAsyncEnumerable()、ToList()或ToListSync()的调用显式切换到客户端计算。有关更多信息,请参阅
这是SQL限制。不能选择分组项,只允许使用键和聚合结果 将
AsEnumerable
添加到LINQ查询中,以便在客户端进行分组:
var a=(
从DbContext.CC中的c
在DbContext.icc.Id中加入icc等于icc.CCId
在DbContext.i中加入i在icc.IId上等于i.Id
在i.PId上的DbContext.p中加入p等于p.Id
选择新的
{
GuidId=p.Id,
StringN=p.StringN,
CCString=c.CCString,
小数值=icc.DecimalValue
})
.可计算的()
.GroupBy(x=>new{x.GuidId,x.StringN})
.选择(x=>新型号
{
GuidId=x.Key.GuidId,
StringN=x.Key.StringN,
值=x。选择(y=>new OtherModel
{
小数点=y。小数点,
CCString=y.CCString
})
})
.OrderBy(x=>x.StringN);
x.Key
没有CCString
成员(因此第二次选择失败)Model
没有StringN
成员,因此OrderBy
失败。你说它在翻译成EF时失败了,但它根本不应该编译。你也不说错误是什么对不起,快拷贝。。我已经编辑了我的代码,它应该是StringN
而不是CCString
。此外,还更新了带有错误的帖子。谢谢你的问题仍然有语法错误。请声明您的正确性我得到的错误是在第三个选择中,我需要执行该选择来获取值。我可以换一种方式吗?正如@RodrigoRodrigues已经说过的,请提供此查询中涉及的实体类,以及每个表中的两个或三个值以及查询的预期结果。在这种情况下,我们可以在本地机器上测试和调试您的问题。您在访问intellisense、调试器和源数据时无法发现错误。因此,不要期望任何人仅仅通过观察您的查询就能发现错误,而不知道底层的数据结构,也没有能力测试或调试它。就是这样!谢谢@Svyatoslav Danyliv