Алгоритм кажется в основном правильным, однако, поскольку значения отсортированы в виде строк, результат не будет в хронологическом порядке.Например, строковое значение «07.07.2010» больше, чем «06.08.2010».Вам потребуется преобразовать значения в значения DateTime, чтобы правильно их сравнивать.
Кроме того, поскольку вы используете значение даты для идентификации элементов после сортировки, а значения не являются уникальными, вы получитес дубликатами некоторых предметов и потерять другие предметы.По-прежнему будет возможно выполнить сортировку таким образом, но тогда вам придется удалить повторяющиеся значения после сортировки и изменить цикл, который соответствует значениям, для обработки повторяющихся совпадений.строковые массивы вместо двухмерных массивов, что сделало бы код намного проще.Вы можете прочитать данные за один проход, и вы можете отсортировать элементы в списке вместо сортировки определенного значения, а затем сопоставить элементы:
List<string[]> desc = new List<string[]>();
const string RDATAPATCH = "rctdata.xdb";
using (StreamReader sr = new StreamReader(RDATAPATCH)) {
string line;
while ((line = sr.ReadLine()) != null) {
desc.Add(line.Split('|'));
}
}
desc.RemoveAt(0); // remove field description line
desc.Sort((a, b) => {
if (a[7] == "nedeschis" && b[7] == "nedeschis") return 0;
if (a[7] == "nedeschis") return -1;
if (b[7] == "nedeschis") return 1;
return DateTime.Parse(a[7]).CompareTo(DateTime.Parse(b[7]));
});