怎么排序呢?

时间:2011-03-29 16:08:36

标签: c# sorting .net-4.0

我有一个数据表填充了数据类型int的可空年份列。此外,每年一次变化,我都添加了一个空白行。

DataTable table = new DataTable();
table.Columns.Add("Year", typeof(int));
table.Columns["Year"].AllowDBNull = true;

表格内容示例:

2005
2005
DBNull.Value
2006
DBNull.Value
2007

在逐行的基础上,只能查看当前行和下一行,我如何对此进行排序,以便DBNull.Value行仍然将年份差异分开?

谢谢!

2 个答案:

答案 0 :(得分:2)

我一般不喜欢这种设计,但是你可以这样做。

添加另一个double类型的列,它将隐藏在显示中,并将其命名为" SortYear"。对于包含多年的行,请将年份放在此隐藏列中。对于前一年加上0.5的空行。然后按SortYear排序,然后按照你真正想要排序的列除去年份。

Year          SortYear  ServiceDescription (or whatever)
2005          2005.0    Internet Service
2005          2005.0    Upgraded Cap Limits
DBNull.Value  2005.5
2006          2006.0    Internet Service
DBNull.Value  2006.5
2007          2007.0    Internet Service



order by SortYear, ServiceDescription

答案 1 :(得分:1)

您需要另一列来执行实际排序。使用时间戳或类似的东西,这样您就可以按插入顺序排序,但显示Year列与现在一样。