Я пытаюсь написать метод, который разбивает DataTable на основе заданного условия (делегат). Моя проблема в том, что условие, которое я использую, всегда разделяет ровно половину DataTable. Кажется, что условие разрешается истинным для половины DataRows, даже если NO DataRows не должно принимать значение true.
Метод выглядит следующим образом:
private DataTable PartitionDataTable(DataTable data, Func<DataRow, bool> condition) {
DataTable removedRows = data.Clone();
for(int i = 0; i < data.Rows.Count; i++) {
if(condition(data.Rows[i])){
removedRows.ImportRow(data.Rows[i]);
data.Rows.Remove(data.Rows[i]);
}
}
return removedRows;
}
Я вызываю этот метод, используя это условие:
DataTable removed = PartitionDataTable(data, (row => DateTimeOffset.Parse(row["timestamp"].ToString()) < baselineTimestamp);
Если максимальная / максимальная временная метка в объекте данных (DataTable) на несколько минут раньше, чем 'baselineTimestamp', определенная с помощью data.Compute("max([timestamp])", String.Empty)
, то половина записей по-прежнему разделяется и удаляется, если ни одна из них должно быть потому, что все они
Понятия не имею, что происходит. Пожалуйста, помогите мне. Цель состоит в том, чтобы разбить DataRows с временными метками ранее заданного (с точностью до миллисекунды).