У меня есть таблица данных ADO.Net, которую мне нужно отсортировать сначала по столбцу 1, а затем по столбцу 2, любой из которых может иметь значения NULL. После сортировки мне нужно прочитать некоторые значения из строк и добавить в просмотр списка.
Я написал код для этого DataTable.DefaultView.Sort (запускается дважды). Но интересно, может ли быть лучший способ.
Я думал, может быть, LINQ ... поэтому я попытался:
OrderedEnumerableRowCollection<DataRow> queryX = dt.AsEnumerable()
.OrderBy(c => c.Field<int?>("column1"))
.ThenBy(c => c.Field<int?>("column2"));
Но это ошибки с "System.InvalidCastException was unhandled"
. Я предположил, что это вызвано значениями NULL, поэтому в качестве теста я указал запрос к таблице данных "where column1 IS NOT NULL"
, и ошибка все еще происходит.
У меня не так много опыта LINQ, поэтому мои вопросы:
- Что не так с моим кодом выше? Концептуально я что-то упускаю из-за того, как работает LINQ?
- Почему фильтрация нулей по-прежнему вызывает это? Опять же, концептуально я что-то упускаю из-за того, как работает LINQ
- Есть ли лучший \ правильный запрос LINQ для этого?
- Есть ли лучший \ правильный (более элегантный) способ сделать это (с использованием LINQ или нет)?
теп