我有一个返回数据表的函数。此函数附加一个额外的行,即计算的总和。现在需要对数据表进行排序。我尝试对数据表进行排序,然后追加总行,但数据表也考虑了总行数。我该如何缓解这种行为?
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);
答案 0 :(得分:2)
我建议使用Linq-To-DataSet
代替更强大,更易读的内容:
dt = dt.AsEnumerable()
.OrderBy(row => row.Field<string>(0) == "Total")
.ThenByDescending(row => row.Field<int>("totalearning"))
.CopyToDataTable();
我假设totalearning
是int
- 列。相应地纠正它。