4

我有一个数据集(Dataset ds),您可以在下面找到数据集中包含演示数据的字段。在我的数据集中,它们是名称为日期(数据类型-日期时间)的列,我想对此列进行排序。我无法从 SQl 进行排序,因为数据集是 2 个不同数据集的合并。请帮助我了解如何在数据集中进行排序。

Date              Volume

07/19/201211:30AM  12

07/18/201201:30PM  13

07/17/201203:30PM  22
4

6 回答 6

11

这是一个简单的Linq-To-DataSet方法:

IEnumerable<DataRow> orderedRows = dataSet.Tables[0].AsEnumerable()
    .OrderBy(r => r.Field<DateTime>("Date"));

现在您可以将其用作DataSource或在foreach. 如果您需要实现它,您可能希望从中创建一个新DataTable的:

DataTable tblOrdered = orderedRows.CopyToDataTable();
于 2012-07-19T08:36:58.903 回答
1

可以data-set.

然后,您可以使用DataView.Sort 属性对数据进行排序。

例如。

   DataView myDataView = DT.DefaultView;  
   myDataView.Sort = "Date DESC";

阅读有关数据集中过滤和排序简介的更多信息

于 2012-07-19T08:19:47.613 回答
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();
于 2018-08-02T12:59:51.787 回答
0

您可以通过 DataView 执行此操作。如果您持有日期时间的列是日期时间列

DataView dv = DataTable.DefaultView;
dv.Sort = "DateTime-ColumnName ASC";

它不适用于将日期时间保存为字符串的字符串列。

于 2012-07-19T07:50:14.730 回答
0

DataTable 的 DataView 有一个排序属性,请将列名传递给它

例如

dataSet1.Table[0].DefautlView.Sort = "ColumnName";

默认排序是升序

有关更多信息,请参阅链接http://msdn.microsoft.com/en-us/library/system.data.dataview.sort(v=vs.100).aspx

于 2012-07-19T07:54:03.257 回答
0

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

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

然后我们可以sort使用我们的数据表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();

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

于 2016-12-12T22:04:50.703 回答