c#dictionary - 添加存储在一个键中的值(列表)

时间:2016-05-03 21:08:10

标签: c# dictionary

这可能很简单但是在堆栈溢出时搜索并没有给我想要的结果。

我有一个简单的字典定义为

var GetAllInjData = new Dictionary<double, List<double>>();

我想要做的就是从dict中选择每个键的值列表并将它们相加以获得单个值!

6 个答案:

答案 0 :(得分:2)

GetAllInjData.SelectMany(a => a.Value).Sum();

看到你的循环后编辑

IEnumerable<double> FieldProd = GetAllInjData.Select(a => a.Value.Sum());

答案 1 :(得分:0)

我认为你可以用LINQ做到这一点:

GetAllInjData[<key>].Sum();

答案 2 :(得分:0)

如果您希望每个键的总和 ,那么您可以使用Select将每个键值对投影到一个新类型,其中键和值的总和作为属性:

GetAllInjData.Select(kvp => new {Key = kvp.Key, Value = kvp.Value.Sum()})

答案 3 :(得分:0)

试试这个:

double key = 1; //for example
double sum = 0.0;
GetAllInjData[key].ForEach(x => sum += x);

答案 4 :(得分:0)

像这样:

var sums =
    from keyVal in GetAllInjData
    select new
    {
        ForKey = keyVal.Key,
        SumIs = keyVal.Value.Sum()
    };

foreach(var sum in sums)
    Debug.WriteLine($"Key: {sum.ForKey} Sum: {sum.SumIs}");

答案 5 :(得分:0)

试试这个

            Dictionary<double, List<double>> GetAllInjData = new Dictionary<double, List<double>>() {
                {1, new List<double>() {1,2,3,4,5,6}},
                {2, new List<double>() {11,12,13,14,15,16}},
                {3, new List<double>() {21,22,23,24,25,26}}
            };
            double results = GetAllInjData[2].Sum();