Member 13814386 Ответов: 1

Visual studio считывает текстовый файл в массив и сортирует его, а затем копирует определенные строки только в список


- Привет!

Использование Visual Studio 2015.
Я читаю текстовый файл в массив. Данные текстового файла выглядят следующим образом:

Ячейка 1, 435
Ячейка 1, 655
Ячейка 2, 923
Ячейка 1, 233
Ячейка 2, 222

Чтение текстового файла работает правильно. Массив содержит данные в том виде, в каком они должны быть. Я просто использую array.sort, и он, кажется, работает и размещает данные в правильном порядке.

Мне нужно иметь возможность сортировать массив по ячейке #.
Далее мне нужно иметь возможность взять только строку с ячейкой 1 или ячейкой 2 в ней и отобразить результаты всей строки в списках.

Спасибо Вам за любую помощь

Что я уже пробовал:

Я могу только перебирать весь массив и отображать его в списке. Я не могу выбрать отдельные строки на основе ячейки #

Richard MacCutchan

Содержит ли Ваш массив только строки выше, или вы разделяете строки на их отдельные поля? Последнее означает, что вы можете легко объединить поля для одной и той же ячейки в строку и отобразить данные таким образом.

1 Ответов

Рейтинг:
1

OriginalGriff

Для сортировки по номеру ячейки вам нужно "изучить" каждую строку, извлечь номер ячейки, преобразовать его в числовое значение, а затем отсортировать массив по нему. Сортировка массива строк сортирует их с помощью сравнения строк, которое сравнивает две строки символ за символом, и результат всего сравнения основан на первом различии.
Таким образом, ваш порядок сортировки будет следующим

Cell 1
Cell 10
Cell 11
...
Cell 19
Cell 2
...
Самый простой способ сделать то, что вы хотите, - это написать статический метод, который сравнивает две строки и возвращает целое число:
public static int CompareLines(string a, string b)
   {
   ...
   }
И используйте его, используя массив.Переопределение сортировки, принимающее делегат:
Array.Sort(myArrayOfStrings, ComapareLines);

Когда вы пишете метод the, он должен возвращать -1, если a находится перед b, 0, если они одинаковы, и 1, Если b находится перед a.