Если у меня есть List<string>
, и я хочу создать один string
из всех элементов в списке, я могу использовать Join
или Aggregate
, как показано ниже для достижения sh that.
var list = new List<string>() { "A", "B", "C", "D", "E" };
var concatAllByJoin = string.Join(string.Empty, list);
var concatAllByAggregate = list.Aggregate((a, b) => a + b);
Любой из них выдаст строку ABCDE
.
Что делать, если я хочу сделать то же самое, но только для определенного диапазона в списке. Скажем, я хочу объединить позиции между индексами 1 и 3 включительно. Другими словами, я хочу, чтобы результат был BCD
.
Один из подходов, который я могу придумать, заключается в использовании GetRange()
примерно так:
var concatRange = string.Join(string.Empty, list.GetRange(1, 3));
Это, очевидно, работает, но проблема это дублирование данных. Мне интересно знать, есть ли способ сделать это без дублирования.