Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ分组秩和_Linq - Fatal编程技术网

LINQ分组秩和

LINQ分组秩和,linq,Linq,我正在尝试编写一段LINQ代码,它允许我从一个对象中提取信息,该对象基本上由一个扩展列表组成,该列表包含两个字符串属性和一个字典属性,其中附加属性的类型为列表中的每一行的 我尝试了GroupBy、Select、Sum的各种组合,并在其他线程中搜索类似的内容,但所有其他与词典相关的问题似乎都没有多少复杂性 我的目标是按照第一个字符串属性对列表对象中的数据进行分组,然后对步骤1中每个分组字符串的一个字典条目进行小计。然后,我想按照步骤1中的分组字符串从字典中获取前5个小计 var r

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

我尝试了GroupBy、Select、Sum的各种组合,并在其他线程中搜索类似的内容,但所有其他与词典相关的问题似乎都没有多少复杂性

我的目标是按照第一个字符串属性对列表对象中的数据进行分组,然后对步骤1中每个分组字符串的一个字典条目进行小计。然后,我想按照步骤1中的分组字符串从字典中获取前5个小计

        var result = List<ListObject>
            .Where(i => i.string2 == "June")
            .GroupBy(i => i.string1)
            .Sum(i => i.Sum(s => s.Values.TryGetValue("Value1",0.0))
           .Take(5));

Also adding the ListObject definition as requested

public class ListObject{
    public string string1{ get; set; }
    public string string2{ get; set; }

    public Dictionary<string, double> Values { get; set; }
var结果=列表
.其中(i=>i.string2==“六月”)
.GroupBy(i=>i.string1)
.Sum(i=>i.Sum(s=>s.Values.TryGetValue(“Value1”,0.0))
.采取(5)项措施;
还应请求添加ListObject定义
公共类ListObject{
公共字符串string1{get;set;}
公共字符串string2{get;set;}
公共字典值{get;set;}

}你的意思是:

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

如果我正确地阅读了问题,您可能正在寻找以下内容:

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);
var los=新列表();
字符串sumField=“Value1”;
var结果=服务水平
.其中(lo=>lo.string2==“六月”)
.GroupBy(lo=>lo.string1)
.选择(g=>new{
键=g键,
总计=g
.其中(x=>x.Values.ContainsKey(sumField))
.Sum(s=>s.Values[sumField]),
})
.OrderByDescending(t=>t.Total)
.采取(5);

您可以发布ListObject变量的类定义吗?
ListObject。其中
没有任何意义,因为
ListObject
是一个类。你从什么开始?单个
列表对象
列表
?更清楚一点-我们从类型列表开始