我有一个组合框来显示我的数据库中的数据(varchar).数据总是"1,2,3,4,其他",当我显示数据时,它排序如下:
1
10
11
12
2
3
4
All
Others
Run Code Online (Sandbox Code Playgroud)
如何使下拉看起来像:
All
1
2
3
4
10
11
12
Others
Run Code Online (Sandbox Code Playgroud)
要么
在SQL中我尝试在ORDER BY CAST(priorityNum AS UNSIGNED INTEGER)
之后添加All
并添加Other
到我的数据表结果中.但是如何设置All
并Others
始终是第一个也是最后一个?
只要您的集合是一个IEnumerable
,您就可以OrderBy
使用自定义比较器方法调用.你的比较器看起来像这样:
class myStringComparer: IComparer<string> {
public int Compare(string a, string b) {
if (a == b) return 0;
if (a == "All" || b == "Others") return -1;
if (a == "Others" || b == "All") return 1;
return int.Parse(a) - int.Parse(b);
}
}
Run Code Online (Sandbox Code Playgroud)
如果发现意外数据(除"全部","其他"或数字之外的任何其他内容),这将只会抛出异常.您可能希望在尝试整数解析之前添加其他逻辑.
现在,您可以呼叫.OrderBy(new myStringComparer())
您的列表/集合.请注意,OrderBy
只能用于IEnumerable
对象(这包括您可以放在foreach
循环上的任何内容,例如数组,列表等).