使用C#对具有日期时间数据类型的列进行数据集排序

4
我有一个数据集(数据集ds),以下是数据集中演示数据的字段。 在我的数据集中,有一个名为“日期”的列(数据类型-日期时间),我想对这一列进行排序。由于数据集是两个不同数据集的合并,因此无法通过SQL进行排序。 请帮助我如何在数据集中进行排序。
Date              Volume

07/19/201211:30AM  12

07/18/201201:30PM  13

07/17/201203:30PM  22

你想再次避免使用Linq吗?否则,你可以使用一个简单的OrderBy(r => r.Field<DateTime>("Date")) - Tim Schmelter
不,我现在开始使用Linq了。它很好,但目前我还处于学习阶段。 - Dharmendra Kumar Singh
7个回答

11
这是一个简单的 Linq-To-DataSet 方法:
IEnumerable<DataRow> orderedRows = dataSet.Tables[0].AsEnumerable()
    .OrderBy(r => r.Field<DateTime>("Date"));

现在你可以将其用作 DataSource 或在 foreach 中对其进行枚举。如果您需要将其具体化,您可能希望从中创建一个新的 DataTable
DataTable tblOrdered = orderedRows.CopyToDataTable();

1
使用Dataview,您可以对Datatable进行排序。 只需将您的Datatable放入Dataview中。 请看以下示例:
您有一个名为dtlog的表格,其中有两列,一列是日期,另一列是详细信息。 您想按日期列对数据表进行排序。
DataTable dtlog = new DataTable();
dtlog.Columns.Add("date");
dtlog.Columns.Add("details");

1. 创建数据视图并将您的数据表放入视图中。
DataView dtview = new DataView(dtlog);
string sortstring = "date DESC"; // sorting in descending manner 
dtview.Sort = sortstring;

2.创建另一个表格,以保存您排序后的数据视图。

DataTable dtsort =dtview.ToTable();

1

代码抛出错误,应该像这样:myDataView.Sort = "Date DESC"; 但它也没有给出准确的排序结果。 - Dharmendra Kumar Singh
是的,是多了一个逗号。谢谢。 - huMpty duMpty

0

0
你可以通过DataView来实现这个功能。如果你的列是一个日期时间列,那么就可以使用它来处理日期时间数据。
DataView dv = DataTable.DefaultView;
dv.Sort = "DateTime-ColumnName ASC";

它无法在将日期时间作为字符串保存的字符串列上运行。


这不会给出准确的结果。 - Dharmendra Kumar Singh
DataTable中的列必须被定义为DateTime类型。 - DOK

0

0

我发现我的解决方案是向Datatable添加更多列,以便我们可以保存DateTime的每个部分:

Tabla.Columns.Add("year", typeof(DateTime));
Tabla.Columns.Add("month", typeof(DateTime));
Tabla.Columns.Add("day", typeof(DateTime));

然后我们可以使用 DataView 对我们的数据表进行排序:

DataView myDataView = DT.DefaultView;

case 1: ASC
  myDataView.Sort = "year asc, month asc, day asc"; 

case 2: DESC
  myDataView.Sort = "year desc, month desc, day desc";


Tabla = myDataViwe.toTable();

结果是我们的数据表按日期时间排序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接