Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 具有group by和.NET核心的Linq查询_List_Linq_Group By_Entity Framework Core - Fatal编程技术网

List 具有group by和.NET核心的Linq查询

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

我想做一个简单的查询。我想要一个包含字符串和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
                 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