Рассчитать среднее значение Lists int C # Dictionary с помощью LINQ - PullRequest
1 голос
/ 19 октября 2019

У меня есть словарь, содержащий 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.1f, 0.2f, 0.4f, 0.5f, 0.8f).

Я вижу, что могу сделать это с помощью цикла for / foreach, но мне интересно, возможно ли получить это среднее значение с помощью простого запроса LINQ.

1 Ответ

4 голосов
/ 19 октября 2019

Для этого примера я хочу получить среднее значение этих значений (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 будет их усреднять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...