我们有一段代码将文本文件加载到数据表中,我们使用DataTable的select语句将过滤语句和排序语句交给它:
DataRow[] dataRowArray = table.Select(filterText, sortExp);
这是因为我们从文件中提取它而全部作为字符串加载。我们遇到的问题是,当用户对某个数字列进行排序时,它们将获得字符串排序:1,11,12 ...... 2,20,21 ... 3,30,31等等。也会影响过滤,因为像<= 10
这样的东西只会返回1而不会返回2,3等
我要做的就是编写一个名为IComparable
的自定义AlphaNumericString
类型。现在当排序运行时,它使用compareTo
方法,一切都很好。但是我不清楚如何让DataSet过滤器与之相配。
主要是我收到的错误如下:
Cannot perform '=' operation on DataAccess.Source.AlphaNumericString and System.String
我试过重载操作数,但它们似乎从未被使用过:
public static bool operator <=(AlphaNumericString alpha, object val)
{
// Compare them
}
有人可以就如何覆盖过滤逻辑提出建议吗?