对保持0值到最后的DataView进行排序
本文关键字:DataView 排序 最后的 | 更新日期: 2023-09-27 18:17:38
我的dataview dv中有以下值:
1,2,0,4,2,1,0,0
我想按升序排序,同时保持0值到最后,像这样:
1,1,2,2,4,0,0,0
我正在做这个:
DataSet ds = (DataSet)Session["test"];
DataTable dt = ds.Tables[0];
DataView dv = new DataView(dt);
dv.Sort = "Value";
输出如下:
0,0,0,1,1,2,2,4
是否有办法让0值一直到最后?
我也尝试过使用dv.RowFilter
,但完全排除了0。我想包括0的。我能做到吗?
你可以使用Linq-To-DataSet
,它也更强大,更不容易出错,更可读。
DataTable orderedTable = ds.Tables[0].AsEnumerable()
.OrderBy(row => row.Field<int>("Value") == 0)
.ThenBy(row => row.Field<int>("Value"))
.CopyToDataTable();
此操作有效,因为如果row.Field<int>("Value") == 0
的值为0,则返回bool
。Enumerable.OrderBy
按升序排列(与OrderByDescending
相反),因为true
可以理解为1,false
可以理解为0,所以Value=0
都排在最后。