C# 不同值的选择和LINQ转换

C# 不同值的选择和LINQ转换,c#,linq,C#,Linq,我有一个简单的选择,LINQ的结构非常紧凑: var p = info.SpRicezioneSpedizioniLights .Where(x => x.SPEDIZIONE_STATO_GENERAZIONE == "I") .GroupBy(x => x.PROGRESSIVO); foreach (var item in p) { // item. Do something } 我必须选择具有不同进度的SpriceZioneSpedZionILIG

我有一个简单的选择,LINQ的结构非常紧凑:

var p = info.SpRicezioneSpedizioniLights
  .Where(x => x.SPEDIZIONE_STATO_GENERAZIONE == "I")
  .GroupBy(x => x.PROGRESSIVO);

foreach (var item in p)
{
        // item. Do something
}
我必须选择具有不同进度的SpriceZioneSpedZionILIGhts中的所有行,并详细说明每一行

当我尝试详细说明项目时,出现以下错误:

“System.Linq.IGrouping”不包含“ID”的定义,并且找不到接受“System.Linq.IGrouping”类型的第一个参数的扩展方法“ID”(是否缺少using指令或程序集引用?)

做我想做的事最好的方法是什么


谢谢

您需要添加另一个
foreach
循环以获取组的详细信息

 foreach (var groupingLevel in p)
 {
    // groupingLevel.Key

    foreach(var item in groupingLevel)
    {
       // item. Do something
    }               
 }
不是使用特定的PROGRESSIVO,而是使用第一个PROGRESSIVO的所有行 不同进展

问题是GroupBy的结果是
System.Linq.IGrouping
对象,该对象包含一组元素的键。 所以,如果您需要组中的第一行,可以使用
FirstOrDefault()
方法

var p = info.SpRicezioneSpedizioniLights
          .Where(x => x.SPEDIZIONE_STATO_GENERAZIONE == "I")
          .GroupBy(x => x.PROGRESSIVO)
          .Select(x=>x.FirstOrDefault());

foreach(var item in p)
{
   if (item != null)
       item.SPEDIZIONE_STATO_GENERAZIONE = "G";
}  

展示你是如何“精心制作”你的项目的。现在你正在创建项目组并在组中迭代,而不是项目本身。没有什么特别的…我尝试称一个项目为SpricezioneSpedizionillights,例如item.SPEDIZIONE_STATO_GENERAZIONE=“G”;拥有我需要的所有对象的最佳模式是什么?为什么要分组?当我使用此代码时,我有一个异常“in”:未处理的异常:System.NotSupportedException:方法“First”只能用作最终查询操作。请考虑在这个实例中使用方法“FrestRealDebug”。