linq merge 2 список объектов списка с использованием LINQ - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть один список из списка {{1, 3, 5}, {2, 4, 6}} другой список списка {{7}, {8}}

Можно ли быстро создать список {{1, 3, 5, 7}, {2, 4, 6, 8}}

1 Ответ

0 голосов
/ 01 сентября 2018

У меня есть один список из списка {{1, 3, 5}, {2, 4, 6}} другой список из списка {{7}, {8}} Можно ли быстро создать список {{1, 3, 5, 7}, {2, 4, 6, 8}}

Да: используйте оператор последовательности Zip.

IEnumerable<IEnumerable<int>> lists1 = whatever;
IEnumerable<IEnumerable<int>> lists2 = whatever;
List<List<int>> zipped = lists1
  .Zip(lists2, (list1, list2) => list1.Concat(list2).ToList())
  .ToList();

Следуй дальше.

  • У нас есть две последовательности, которые содержат последовательности.
  • Zip берет один из первого и один из второго, попарно, и объединяет их
  • Комбинация состоит в том, чтобы соединить list2 до конца list1.
  • Это дает вам IEnumerable<int>. Мы хотим List<int>, поэтому ToList это.
  • Результатом Zip является IEnumerable<List<int>>.
  • Мы хотим List<List<int>>, поэтому мы ToList все это.

Это техника, которую вы должны использовать при написании запросов LINQ; просто разбейте все на несколько простых шагов, а затем объедините их вместе.

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