LINQ GroupBy-Rank-Sum

时间:2013-06-13 17:30:31

标签: linq

我正在尝试编写一段LINQ代码,它允许我从一个对象中提取信息,该对象基本上由包含2个字符串属性和字典属性的扩展列表组成,其中ditionary的类型为{{1} },对于List中的每一行。

我尝试了各种GroupBy,Select,Sum的组合,并且已经搜索了其他类似的东西,但所有其他与字典相关的问题似乎都有很少的复杂性。

我的目标是通过第一个字符串属性对List对象中的数据进行分组,然后对步骤1中每个分组字符串的一个Dictionary条目进行小计。然后我想从字典中取出前5个小计来自step1的分组字符串。

<string, double>

}

2 个答案:

答案 0 :(得分:0)

你的意思是:

someEnumerable.GroupBy(e => e.SomeDictionary.Values.Sum());

答案 1 :(得分:0)

如果我正确地阅读了这个问题,你可能会找到这样的东西:

var los = new List<ListObject>();
string sumField = "Value1";

var result = los
    .Where(lo => lo.string2 == "June")
    .GroupBy(lo => lo.string1)
    .Select(g => new {
        Key = g.Key,
        Total = g
            .Where(x => x.Values.ContainsKey(sumField))
            .Sum(s => s.Values[sumField]),
    })
    .OrderByDescending(t => t.Total)
    .Take(5);