在执行Linq.Groupby C#之后如何获得计数

时间:2019-05-23 21:39:28

标签: c# linq

如何获取下面的linqGroups中的项目数。 我想在调试/跟踪语句中显示它。 该代码用于允许我为每个供应商创建一个采购订单。因此,问题是运行.GroupBy子句后有多少个供应商或采购订单。

    List<webPOInfo> lstPOInfo = new List<webPOInfo>();

    int poItemsCount = 0; 
    foreach (var item in linqQuery)
    {
        poItemsCount++; 
        webPOInfo info = new webPOInfo(item.qVendorName, item.qSku, item.qTransID, item.qSize, item.qQty);
        lstPOInfo.Add(info);
    }


    //loop through each vendor name group
    var linqGroups = lstPOInfo.GroupBy(x => x.VendorName);

    int countLinkGroups = linqGroups.Count<webPOInfo>;  // Error here 

上面的尝试给我“错误1无法将方法组'Count'转换为非委托类型'int'。您是否打算调用该方法?”

3 个答案:

答案 0 :(得分:2)

Count是一种方法,因此您的最后一行应如下所示:

int countLinkGroups = linqGroups.Count();

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.count?view=netframework-4.8

答案 1 :(得分:1)

您可以像这样对分组本身进行计数

var linqGroups = lstPOInfo.GroupBy(x => x.VendorName)
 .Select(x => new { Key = x.key, 
                    Count = x.Count()
                  }).ToList(); 

答案 2 :(得分:1)

您可以直接将Count()扩展名用于组

var linqGroups = lstPOInfo.GroupBy(x => x.VendorName);

int countLinkGroups = linqGroups.Count();

这将为您提供大量的供应商,希望这可以为您提供帮助