C# 不同值的选择和LINQ转换
我有一个简单的选择,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
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”。