0

我有一个简单的对象:

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

        public Int32 source { get; set; }
}

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

我需要按来源分组,这将产生三个项目1002002500。我还需要按计数订购,如下所示:

5 100
3 200 
2 2500

最终结果是我想获得最高计数的源,在这种情况下将是100

4

2 回答 2

3
var res = lst.GroupBy(o=>o.source)
             .Select(grp=>new {Count=grp.Count(),Source=grp.Key});
于 2012-11-25T17:24:55.090 回答
3

这将为您提供最高数量的来源:

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

解释

  • 按源值对项目进行分组(它将创建三个组)
  • 按每个组中的项目计数对组进行排序
  • 选择第一组(它将有最大项目数)
  • 获取分组键(即源值)
于 2012-11-25T17:28:15.503 回答