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
.net DotNet LINQ:执行xxx.GroupBy(x=>;x.VendorName)后group.key是什么_.net_Linq_Key_Grouping - Fatal编程技术网

.net DotNet LINQ:执行xxx.GroupBy(x=>;x.VendorName)后group.key是什么

.net DotNet LINQ:执行xxx.GroupBy(x=>;x.VendorName)后group.key是什么,.net,linq,key,grouping,.net,Linq,Key,Grouping,通常.Key属性设置为什么 在我下面的示例中,密钥似乎为空。至少它不是预期中的供应商名称 我想当我循环时,我可以在项目上获得vendorName,但是为什么不在组级别上,或者如果有,它在哪里 int poItemsCount = 0; foreach (var item in linqQuery) { poItemsCount++; webPOInfo info = new webPOInfo(item.qVendorName, item.

通常.Key属性设置为什么

在我下面的示例中,密钥似乎为空。至少它不是预期中的供应商名称

我想当我循环时,我可以在项目上获得vendorName,但是为什么不在组级别上,或者如果有,它在哪里

    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);
循环浏览结果:

    foreach (var group in linqGroups)
    {
        //for each group, we need to create a PO header
        Logging.logMessage("Creating a PO for Vendor: " + group.Key, trcProgramName, trcProgGuid, trcCorrGuid, trcKey, "4201", null);
    ...etc
    }
跟踪显示:

为供应商创建采购订单:


分组后必须创建一个新对象

lstPOInfo.GroupBy(x => x.VendorName, (key, webPoInfoCollection) => new { Key = key, objectCollection = webPoInfoCollection });
下面是如何循环组数据

    foreach (var groupObj in linqGroups)
    {
        //for each group, we need to create a PO header
        Logging.logMessage("Creating a PO for Vendor: " + groupObj.Key, trcProgramName, trcProgGuid, trcCorrGuid, trcKey, "4201", null);

        foreach (var webPo in groupObj.objectCollection)
        { 
         ...etc
        }

        ...etc
    }

键应该是
VendorName
属性返回的任何内容。如果您循环查看
lstPOInfo
并记录每个采购订单的供应商名称,会发生什么情况?几乎某些项目。输入的qVendorName从不为空或null。我可以在明天重新登录工作时进行检查。代码正在生产中,除了Trace语句外,其他代码都在工作。它将采购订单存储到数据库中,每个供应商一个。如果一个web客户从3个供应商订购5件商品,它将为每个供应商创建3个POs。数据库插入从组循环中的另一个子循环获取供应商。是的,确认的VendorName中肯定有一个名称。好的,可能存在一些明显的边缘情况,其中VendorName不存在。我检查了测试和生产中的跟踪历史,group.key正常工作。在测试系统上重新创建是很棘手的。所以如果我理解的话,你是说密钥不在那里,除非我把它放在那里。我不能假设该键是我正在执行GroupBy的变量。不,该键已经存在,这只是检查集合中字段“VendorName”@Kei的解决方案是否工作正常的另一种方法。在上面的第一个灰色框中,左侧是否支持“var linqGroups=”。这就是我尝试并得到的结果:错误CS1579:foreach语句无法对“AnonymousType#1”类型的变量进行操作,因为“AnonymousType#1”不包含“GetEnumerator”的公共定义。好吧,可能存在一些明显的边缘情况,其中VendorName不存在。我检查了测试和生产中的跟踪历史,group.key正常工作。只是很难在测试系统上重新创建。