我的sql数据库不包含故障代码所有者,这些详细信息存储在xml文件中当数据来自外部源时,是否可以使用Groupby FaultCodeOwner?
我收到以下错误:无法将void分配给匿名类型属性
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()
});
答案 0 :(得分:2)
如果不先将查询结果存入内存,则无法对数据库中没有的任何内容进行分组。
在Where方法执行此操作后插入ToEnumerable或ToList。不幸的是,你可能会在内存中带来比你原来更多的数据。
答案 1 :(得分:1)
将GroupBy
方法更改为:
.GroupBy(results =>
{
FaultCodeOwnerType faultCodeOwner; // rename FaultCodeOwnerType to the type of FaultCodeOwner
faultCodeDetails.getFacultCodeOwner(results.Field<int>("FaultCode"), out faultCodeOwner);
return new
{
FaultCodeOwner = faultCodeOwner
};
})
faultCodeDetails.getFacultCodeOwner
会返回void
,因此您无法为其指定变量。您必须首先声明FaultCodeOwner类型的变量,然后将其作为out参数传递给getFacultCodeOwner
,它将为您分配。