C#Linq在GroupBy中分配匿名类型
我的sql数据库不包括故障代码所有者,这些详细信息存储在xml文件中。当数据来自外部源时,是否可以按故障代码所有者分组 我收到以下错误:无法将void分配给匿名类型属性C#Linq在GroupBy中分配匿名类型,c#,sql,linq,C#,Sql,Linq,我的sql数据库不包括故障代码所有者,这些详细信息存储在xml文件中。当数据来自外部源时,是否可以按故障代码所有者分组 我收到以下错误:无法将void分配给匿名类型属性 var query = referenceDt.AsEnumerable() .Where(results => declarations.CaapcityIssues.Contains((results.Field<string>("FabricName"))))
var query = referenceDt.AsEnumerable()
.Where(results => declarations.CaapcityIssues.Contains((results.Field<string>("FabricName"))))
.GroupBy(results => new
{
**FaultCodeOwner = faultCodeDetails.getFacultCodeOwner(results.Field<int>("FaultCode"), out owner)**
})
.OrderBy(newFaultCodes => newFaultCodes.Key.FaultCodeOnwer)
.Select(newFaultCodes => new
{
FaultCodeOwner = newFaultCodes.Key.FaultCodeOwner,
Count = newFaultCodes.Count()
});
var query=referenceDt.AsEnumerable()
.Where(results=>declarations.caapcityssues.Contains((results.Field(“FabricName”)))
.GroupBy(结果=>新建)
{
**FaultCodeOwner=faultCodeDetails.getFacultCodeOwner(results.Field(“FaultCode”),out owner)**
})
.OrderBy(newFaultCodes=>newFaultCodes.Key.FaultCodeOnwer)
.选择(newFaultCodes=>new
{
FaultCodeOwner=newFaultCodes.Key.FaultCodeOwner,
Count=newFaultCodes.Count()
});
如果不首先将查询结果放入内存,则无法按数据库中以外的任何内容进行分组
在Where方法之后插入ToEnumerable或ToList将执行此操作。不幸的是,您可能会在内存中带来更多的数据。将
GroupBy
方法更改为:
.GroupBy(results =>
{
FaultCodeOwnerType faultCodeOwner; // rename FaultCodeOwnerType to the type of FaultCodeOwner
faultCodeDetails.getFacultCodeOwner(results.Field<int>("FaultCode"), out faultCodeOwner);
return new
{
FaultCodeOwner = faultCodeOwner
};
})
.GroupBy(结果=>
{
FaultCodeOwnerType faultCodeOwner;//将FaultCodeOwnerType重命名为faultCodeOwner的类型
faultCodeDetails.getFaultCodeOwner(results.Field(“FaultCode”),out faultCodeOwner);
还新
{
FaultCodeOwner=FaultCodeOwner
};
})
faultCodeDetails.getFacultCodeOwner
返回void
,因此无法为其分配变量。您必须首先声明FaultCodeOwner类型的变量,然后将其作为输出参数传递给GetFaultCodeOwner
,后者将为您分配该变量。感谢您的指导信号。成功了。但是,我必须删除faultCodeOwner;类型faultCodeOwner;。但一旦我这么做了,它就像我想要的那样工作。