У меня есть DataSet, содержащий несколько столбцов. В большинстве случаев один из этих столбцов - это число. Поскольку иногда это строка, в базе данных это столбец varchar (10).
Однако при сортировке столбца varchar он сортируется как строка. Вместо этого я хочу попытаться как-то переопределить это так, чтобы целые числа сортировались как целые; это не так уж и сложно, и у меня уже есть функция, которая делает это в другом месте моего кода. Однако я не думаю, что возможно предоставить типизированный DataSet, как будто у меня есть настраиваемый тип с собственной реализацией сортировки, и из того, что я вижу, BindingSource вообще не думает о столбцах, что делает его ужасно трудным для сортировки. их. Я могу легко сделать это, используя функцию сортировки ListView / DataGridView, но я бы хотел, чтобы дисплей находился в виртуальном режиме из-за количества данных, которые у меня есть, и для этого мне в любом случае нужно обеспечить собственную сортировку.
Есть ли способ делать то, что я хочу?





Я думаю, что лучше всего добавить новый вычисляемый столбец, который преобразует varchar (10) в int и отсортирует его.
myDataTable.Columns.Add("Sorter", typeof(System.Int32), "Convert(TextColumn, 'System.Int32')");
Это вызовет исключения, когда строка в вашем столбце varchar (который я назвал «TextColumn» в приведенном выше коде), но вы можете обойти это, используя вызов функции Iif () в выражении.