【问题标题】:Calculate the average of Lists int C# Dictionary using LINQ使用 LINQ 计算 Lists int C# Dictionary 的平均值
【发布时间】:2020-02-16 03:24:34
【问题描述】:

我有一个包含 n 对键/值的字典,我想获得字典中每个列表中前两个值的总平均值。 这是一个例子:

    private Dictionary<int, List<float>> _myValues = new Dictionary<int, List<float>>
    {
        {1, new List<float>{0.1f, 0.2f, 0.3f},
        {2, new List<float>{0.4f, 0.5f, 0.6f, 0.7f},
        {3, new List<float>{0.8f}
    };

对于这个例子,我想要这些值的平均值(0.1f0.2f0.4f0.5f0.8f)。

我发现我可以使用 for/foreach 循环来做到这一点,但我想知道是否可以使用简单的 LINQ 查询来获得该平均值。

【问题讨论】:

  • 以这种方式使用字典不会给您带来任何好处。这将与从列表中搜索和输出项目的速度相同。

标签: c# list linq dictionary


【解决方案1】:

对于这个例子,我想要这些值的平均值 (0.1f, 0.2f, 0.4f, 0.5f, 0.8f)。

Dictionary<int, List<float>> _myValues = new Dictionary<int, List<float>>
{
    {1, new List<float>{0.1f, 0.2f, 0.3f}},
    {2, new List<float>{0.4f, 0.5f, 0.6f, 0.7f}},
    {3, new List<float>{0.8f}}
};

var result = _myValues.Values.SelectMany(z => z.Take(2)).Average();

Values 将从Dictionary 获取值(即忽略Keys,因为它们不会影响结果)。 Take(2) 将从每个列表中获取前两个条目。 SelectMany 将有效地将所有这两个条目连接到一个投影中。 Average 将平均它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多