Я замечаю, что вторая-последняя строка является единственной, в которой заполнены все четыре даты. Я также замечаю, что 01 октября 2013 года - до 01 ноября 2013 года. Я сильно подозреваю, что эти даты сравниваются друг с другом. Я не могу полностью диагностировать или исправить проблему, не зная, как выглядит метод SortIt
. Несмотря на это, это, вероятно, источник вашей проблемы, поэтому я бы сосредоточил ваши усилия там.
Подумайте, что должно произойти, когда все четыре даты заполнены, и выясните, как обращаться с этим делом.
Edit:
Теперь, когда вы добавили код SortIt
, взгляните на флаги allFromDateFilledIn
и allFloatingFromDateFilledIn
. Оба из них всегда будут ложными с данными вашего примера, потому что оба столбца From и FloatingFrom содержат где-то хотя бы одну нулевую ячейку. Следовательно, ваш SortIt
метод всегда будет оценивать это:
a = aFrom ?? aFloatingFrom;
b = bFrom ?? bFloatingFrom;
... что означает сравнение значений из разных столбцов вместе. Это также означает, что при наличии как From, так и FloatingFrom значение сравнения всегда побеждает.
Редактировать 2:
Вы можете попробовать заменить вышеприведенное внутренним if/else
следующим образом:
if (aFrom != null && bFrom != null)
{
a = aFrom;
b = bFrom;
}
else if (aFloatingFrom != null && bFloatingFrom != null)
{
a = aFloatingFrom;
b = bFloatingFrom;
}
else
{
a = aFrom ?? aFloatingFrom;
b = bFrom ?? bFloatingFrom;
}
Я чувствую, что, возможно, эта логика может быть уменьшена / претритирована, но, кажется, легче всего понять этот путь. Обратите внимание, что From по-прежнему имеет более высокий приоритет, чем FloatingFrom.
Возможно, вы захотите рассмотреть и то, что делают ваши логические флаги. Они вступают в игру только тогда, когда один или другой столбец полностью заполнен, и в этом случае они блокируют этот столбец как столбец сравнения. Это может быть то, что вы хотите, или это может быть ненужным. Вы уже установили, что From имеет приоритет над FloatingFrom, поэтому без причины переопределять это правило, я бы просто следовал ему для согласованности. Просто мысль.