如何在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 ";