C# - преобразовать словарь списков в список кортежей с помощью LINQ - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть словарь:

Dictionary<int, List<(byte Id, string name)

Структура этого словаря будет примерно такой:

{
[1, {(1, "Leo"), (2, "Messi")}]
[2, {(3, "Cris"), (4, "Ronaldo")}]
}

Как я могу преобразовать его в следующее, используя LINQ:

List<(int, byte)>

Таким образом, структура становится примерно такой:

{
(1,1),
(1,2),
(2,3),
(2,4),
}

TIA.

1 Ответ

2 голосов
/ 01 апреля 2020

Предполагая, что ваш словарь объявлен следующим образом

var dict = new Dictionary<int, List<(byte Id, string name)>>
{
    {1, new List<(byte Id, string name)> {(1, "Leo"), (2, "Messi")}},
    {2, new List<(byte Id, string name)> {(3, "Cris"), (4, "Ronaldo") }}
};

Вы можете преобразовать его в List<(int, byte)>, используя SelectMany метод

var list = dict.SelectMany(kvp => kvp.Value, (pair, tuple) => (pair.Key, tuple.Id)).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...