Where
и Contains
ваши друзья здесь:
Where
имеет перегрузку, которая принимает индекс массива в качестве второго аргумента.
var indicesToTake = new int[] { 1, 3, 5 };
string[] lines = File
.ReadLines(openFileDialog1.FileName)
.Where((x, i) => indicesToTake.Contains(i))
.ToArray();
string fullText = string.Join(System.Environment.NewLine, lines); // and TextBox1.Text = fullText;
// or TextBox1.Lines = lines
, вы также можете построить диапазон индексов, который вы хотите с помощью linq, например, если вы хотите, чтобы все нечетные индексы были в диапазоне от 1 до 100:
var indicesToTake = Enumerable.Range(100).Where(i => i % 2 == 1);
Как писал Дмитрий Быченко, вы можете использовать другие приемы оптимизации (Take
, чтобы не проверять все массив, особенно если вы хотите строки с индексом ниже 10, но вы хотите гораздо больше строк после последней)