使用Lambda按列表分组

时间:2012-11-25 17:21:23

标签: c# linq lambda

我有一个简单的对象:

public class obj
    {
        public Int32 id { get; set; }

        public Int32 source { get; set; }
}

现在我有一个列表:List<obj>个10个对象,其中5个源设置为100,3个源设置为200,2个源设置为{{1 }}

我需要按来源进行分组,这会产生三个项2500100200。 此外,我需要按计数订购,如下:

2500

最终结果是我希望获得具有最高计数的来源,在这种情况下将为5 100 3 200 2 2500

2 个答案:

答案 0 :(得分:3)

var res = lst.GroupBy(o=>o.source)
             .Select(grp=>new {Count=grp.Count(),Source=grp.Key});

答案 1 :(得分:3)

这将为您提供最重要的来源:

int topSource = list.GroupBy(o => o.source)
                    .OrderByDescending(g => g.Count())
                    .First()
                    .Key;

解释

  • 按源值对项目进行分组(将创建三个组)
  • 按组中的项目顺序对组进行排序
  • 选择第一个组(它将具有最大项目数)
  • 获取分组键(源值)