0

我的 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。有没有办法我可以做到这一点?

4

1 回答 1

0

您可以使用Linq-To-DataSet更强大、更不易出错且更具可读性的版本。

DataTable orderedTable = ds.Tables[0].AsEnumerable()
    .OrderBy(row => row.Field<int>("Value") == 0)
    .ThenBy(row => row.Field<int>("Value"))
    .CopyToDataTable();

这是有效的,因为如果值为 0,则row.Field<int>("Value") == 0返回a。orders 升序(而不是),因为可以理解为 1 和0都排在最后。boolEnumerable.OrderByOrderByDescendingtruefalseValue=0

于 2013-06-10T15:02:36.433 回答