如何使用linq按照T集合列表中的给定列进行分组?

时间:2011-09-22 16:58:23

标签: c# linq

说我有一个

的集合
IList<Products> products

我想按照该集合中的Product.Type进行分组,其中Type为Guid

考虑一下,我真的只需要按Product.Type订购,不会订购和分组返回相同的结果吗?

3 个答案:

答案 0 :(得分:4)

订购和分组不是一回事,不是。分组通常使用排序来实现,但分组意味着将组中的项目与另一组中的项目隔离,而排序仅排列项目,以便将一个组的项目收集在集合的特定部分中。

例如:

// Grouping
var groups = products.GroupBy(x => x.Type);
foreach (var group in groups)
{
    Console.WriteLine("Group " + group.Key);

    foreach (var product in group)
    {
        // This will only enumerate over items that are in the group.
    }
}

// Ordering
var ordered = products.OrderBy(x => x.Type);
foreach (var product in ordered)
{
    // This will enumerate all the items, regardless of the group,
    // but the items will be arranged so that the items with the same
    // group are collected together
}

答案 1 :(得分:2)

您可以使用OrderBy扩展方法。

var orderedProducts = products.OrderBy(p => p.Type);

或者对于分组,请使用GroupBy:

var groupedProducts = products.GroupBy(p => p.Type);

答案 2 :(得分:0)

var list = from product in productList group product by product.Type;