我是第一次使用Linq,所以我不了解它的语法。我想对一个列表进行分组,然后用foreach循环遍历它,就像下面我的逻辑一样。显然我的逻辑不起作用。
我的代码:
var final = finalv.Union(finalc);
final = final.GroupBy(x => x.Clave);
foreach (var articulo in final)
{
Articulo articulo2 = new Articulo();
articulo2.ArtID = articulo.ArtID;
articulo2.Clave = articulo.Clave;
articulo2.ClaveAlterna = articulo.ClaveAlterna;
lista.Add(articulo2);
}
2条答案
按热度按时间xtfmy6hx1#
首先,这种用法在语法上与
GroupBy
的重载方法一致:GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
,它将返回一个IEnumerable<IGrouping<TKey,TSource>>
变量。这意味着,如果运行
final.GroupBy(x => x.Clave)
,假设他返回finalWithGrouped
,那么finalWithGrouped.Key
是键,finalWithGrouped.ToList()
是具有相同键的所有变量的集合(在这里,它具有相同的Clave
)。对于您的代码,请尝试以下操作:
我建议您阅读一些使用
GroupBy
的examples。70gysomp2#
当你对一个列表进行分组时,它将返回一个键和分组列表,而你正在尝试访问一个列表的单个属性。
当你分组一个数据,你可以把它转换成字典,这不是必要的,但更好的方式对我来说.你可以试试这个代码: