Упростить вложенный цикл с помощью linq - PullRequest
0 голосов
/ 13 июня 2019

У меня есть список с вложенными элементами, и я хочу переместить значения / узел из категории 1 в категорию 2, которые находятся на том же уровне. Выполнение этого с использованием двойного цикла for занимает много времени. Как я могу упростить и сделать это быстро, используя LINQ?

foreach (var item in masterlist) {
    foreach (var item1 in item.Category1) {
        item1.Category1 = item1.Category2;
        item1.Category2 = null;
    }
}

1 Ответ

1 голос
/ 13 июня 2019

Вам все еще нужно использовать foreach, потому что Linq касается только итерации и запросов и должен не использоваться для введения побочных эффектов или действий (это , почему Linq не делает иметь ForEach или Do метод расширения ).

Обратите внимание, что поскольку item.Category1 перезаписано внутри цикла, вам необходимо сначала с нетерпением оценить выражение Linq.

Попробуйте это (при условии, что ваш тип элемента списка назван ListItem):

List<ListItem> allListItems = masterList
    .SelectMany( li => li.Category1 )
    .ToList();

foreach( ListItem item in listItems )
{
    item.Category1 = item.Category2;
    item.Category2 = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...