如何在c#中按两列对DataTable进行排序
我有一个如下所示的DataTable
;
| ID | ItemIndex | ItemValue ce895bd9-9a92-44bd-8d79-986f991154a9 1 3 ae7d714e-a457-41a8-8bb4-b5a0471c3d2f 2 2 a774dff3-acc0-4f50-a211-a775e28dcae3 2 1 292bbd50-290b-4511-9e4e-2e74e3ebe273 3 2 ae7d714e-a457-41a8-8bb3-b5a0471c3d22 3 1
我想先通过ItemIndex
对这个表进行排序,然后按ItemValue
对排序后的表进行排序。
我怎样才能做到这一点?
编辑:排序后,我想要我的表如下;
| ID | ItemIndex | ItemValue ce895bd9-9a92-44bd-8d79-986f991154a9 1 3 a774dff3-acc0-4f50-a211-a775e28dcae3 2 1 ae7d714e-a457-41a8-8bb4-b5a0471c3d2f 2 2 ae7d714e-a457-41a8-8bb3-b5a0471c3d22 3 1 292bbd50-290b-4511-9e4e-2e74e3ebe273 3 2
您可以使用LINQ to DataSet / DataTable
var newDataTable = yourtable.AsEnumerable() .OrderBy(r=> r.Field("ItemIndex")) .ThenBy(r=> r.Field ("ItemValue")) .CopyToDataTable();
创建DataView并使用Sort属性:
DataView dv = new DataView(dt); dv.Sort = "ItemIndex, ItemValue";
例如
foreach (DataRowView row in dv) { Console.WriteLine(" {0} \t {1}", row["ItemIndex"], row["ItemValue"]); }
有关更多信息,请查看MDSN以获取更完整的示例:
http://msdn.microsoft.com/en-us/library/system.data.dataview.sort.aspx
在datatable对象上,只需获取defaultview对象并设置排序。
dataTable.DefaultView.Sort = "ItemIndex, ItemValue";
通过创建数据视图
var dataView = new DataView(dataTable); dataView.Sort = "ItemIndex ASC, ItemValue ASC"
这里dataTable是您要排序的表
_UserAuditTrailTable.DefaultView.Sort = sortExpression;
或者你可以使用它
DataView oDataSet; oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";