Преобразование списка <string>, содержащего элементы отношений «многие ко многим», в отношения «один ко многим» - PullRequest
0 голосов
/ 08 мая 2020

У меня есть список, содержащий строки, разделенные знаком ''. Список служит для работы в качестве списка отношений "многие-ко-многим":

Category1 Item1
Category1 Item2
Category1 Item3
Category2 Item1 
Category2 Item2 
Category2 Item3
Category2 Item4
Category2 Item5
Category3 Item1 

Мне нужно преобразовать этот список в тот, который имеет порядок отношений "один ко многим" с элементами, разделенными знаком ";" пример:

Category1 Item1;Item2;Item3
Category2 Item1;Item2;Item3;Item4;Item5
Category3 Item1

У меня сейчас несколько циклов foreach. Я хотел бы поделиться с вами множеством методов, которые я пробовал, но это действительно беспорядок. Однако что-то мне подсказывает, что для этого может быть применена техника лямбда. Может кто-то указать мне верное направление? Спасибо

1 Ответ

1 голос
/ 08 мая 2020
var items = new List<string> {
   "Category1 Item1",
   "Category1 Item2",
   "Category1 Item3",
   "Category2 Item1",
   "Category2 Item2",
   "Category2 Item3",
   "Category2 Item4",
   "Category2 Item5",
   "Category3 Item1"
};

var result = items.Select(x => x.Split(' '))
                  .Select(x => new {
                     Category = x[0],
                     Item = x[1]
                  })
                  .GroupBy(x => x.Category, y => y.Item, (k, e) => string.Join(";", e))
                  .ToList();

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