如何对数据表进行排序,然后在底部追加行?

时间:2014-03-21 10:15:01

标签: c# asp.net datatable

我有一个返回数据表的函数。此函数附加一个额外的行,即计算的总和。现在需要对数据表进行排序。我尝试对数据表进行排序,然后追加总行,但数据表也考虑了总行数。我该如何缓解这种行为?

          dt.DefaultView.Sort = "totalearning DESC"; //sorting first then adding
                DataRow dr = dt.NewRow();
                dr.ItemArray = new object[] { "Total", dt.Compute("Sum(redeemed)", ""), dt.Compute("Sum(earning)", ""), dt.Compute("Sum(paidhousefee)", ""), dt.Compute("Sum(paidfine)", ""), dt.Compute("Sum(totalearning)", ""), dt.Compute("Sum(noofdayspresent)", ""), dt.Compute("Sum(noofdaysabsent)", ""), dt.Compute("Sum(avgdaily)", "") };
                dt.Rows.InsertAt(dr, dt.Rows.Count);

1 个答案:

答案 0 :(得分:2)

我建议使用Linq-To-DataSet代替更强大,更易读的内容:

dt = dt.AsEnumerable()
     .OrderBy(row => row.Field<string>(0) == "Total")
     .ThenByDescending(row => row.Field<int>("totalearning"))
     .CopyToDataTable();

我假设totalearningint - 列。相应地纠正它。