我有一个数据集(Dataset ds),您可以在下面找到数据集中包含演示数据的字段。在我的数据集中,它们是名称为日期(数据类型-日期时间)的列,我想对此列进行排序。我无法从 SQl 进行排序,因为数据集是 2 个不同数据集的合并。请帮助我了解如何在数据集中进行排序。
Date Volume
07/19/201211:30AM 12
07/18/201201:30PM 13
07/17/201203:30PM 22
这是一个简单的Linq-To-DataSet
方法:
IEnumerable<DataRow> orderedRows = dataSet.Tables[0].AsEnumerable()
.OrderBy(r => r.Field<DateTime>("Date"));
现在您可以将其用作DataSource
或在foreach
. 如果您需要实现它,您可能希望从中创建一个新DataTable
的:
DataTable tblOrdered = orderedRows.CopyToDataTable();
您可以从data-set
.
然后,您可以使用DataView.Sort 属性对数据进行排序。
例如。
DataView myDataView = DT.DefaultView;
myDataView.Sort = "Date DESC";
阅读有关数据集中过滤和排序简介的更多信息
使用 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();
您可以通过 DataView 执行此操作。如果您持有日期时间的列是日期时间列
DataView dv = DataTable.DefaultView;
dv.Sort = "DateTime-ColumnName ASC";
它不适用于将日期时间保存为字符串的字符串列。
DataTable 的 DataView 有一个排序属性,请将列名传递给它
例如
dataSet1.Table[0].DefautlView.Sort = "ColumnName";
默认排序是升序
有关更多信息,请参阅链接http://msdn.microsoft.com/en-us/library/system.data.dataview.sort(v=vs.100).aspx
我发现我的解决方案是向 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();
结果是我们按日期时间排序的数据表