繁体   English   中英

C#Linq在GroupBy中分配匿名类型

[英]C# Linq Assign Anonymous Type in GroupBy

我的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()
            });

如果不先将查询结果存入内存,则无法对数据库中没有的任何内容进行分组。

在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
    };
})

faultCodeDetails.getFacultCodeOwner返回void ,因此您无法为其分配变量。 您必须首先声明FaultCodeOwner类型的变量,然后将其作为out参数传递给getFacultCodeOwner ,它将为您分配它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM