.net 数据集列的自定义排序

.net 数据集列的自定义排序,.net,database,.net,Database,我有一个包含几列的数据集。其中一列是数字,大多数情况下是数字。因为它偶尔是一个字符串,所以在数据库中是一个varchar(10)列 但是,当您对varchar列进行排序时,它会将其排序为字符串。相反,我想做的是尝试以某种方式重写它,以便它像整数一样对整数进行排序;这并不难,我已经有了一个函数,在我的代码中的其他地方可以做到这一点。然而,我认为不可能给出一个类型化的数据集,就像我有一个自定义类型和它自己的排序实现一样,而且从我所看到的BindingSource根本没有考虑列,这使得对它们进行排序非

我有一个包含几列的数据集。其中一列是数字,大多数情况下是数字。因为它偶尔是一个字符串,所以在数据库中是一个varchar(10)列

但是,当您对varchar列进行排序时,它会将其排序为字符串。相反,我想做的是尝试以某种方式重写它,以便它像整数一样对整数进行排序;这并不难,我已经有了一个函数,在我的代码中的其他地方可以做到这一点。然而,我认为不可能给出一个类型化的数据集,就像我有一个自定义类型和它自己的排序实现一样,而且从我所看到的BindingSource根本没有考虑列,这使得对它们进行排序非常困难。我可以使用ListView/DataGridView排序功能轻松地完成这项工作,但由于我拥有大量数据,我希望显示处于虚拟模式,为此我需要提供自己的排序


有什么方法可以完成我想做的吗?

我认为最好的办法是添加一个新的计算列,将varchar(10)转换为int,并在此基础上排序

myDataTable.Columns.Add("Sorter", typeof(System.Int32), "Convert(TextColumn, 'System.Int32')");
当varchar列中的字符串(我在上面的代码中称为“TextColumn”)出现异常时,这将引发异常,但是您可以使用表达式中的Iif()函数调用来解决这个问题