У меня есть метод, который много раз разбивает List , но в остальном он просто считывает элементы из него и сравнивает их. В настоящее время я делаю это с помощью
minOutputPos=output.BinarySearch(....);
result.AddRange(Map(input.Take(minInputPos).ToList(),output.Take(minOutputPos).ToList(),maintainRelativeOrder));
result.AddRange(Map(input.Skip(minInputPos+1).ToList(), output.Skip(minOutputPos+1).ToList(), maintainRelativeOrder));
. Это неоптимально, поскольку создает множество ненужных копий базового массива. Я мог бы создать класс ListView, который действовал бы как контейнер доступа только для чтения к той части списка, которую я обрабатываю, и это было бы оптимально. Однако я не могу избавиться от ощущения, что нечто подобное, вероятно, уже существует. список для указанного диапазона без создания копии списка?