C# DataTable排序,无需创建新DataTable并维护RowState
我正在使用C# DataTable排序,无需创建新DataTable并维护RowState,c#,datatable,C#,Datatable,我正在使用DataTable。我希望在不创建副本的情况下对特定列进行排序。我也尝试过使用DataTable.Select(),但它需要为排序后的输出创建新表,这对我来说不起作用,因为我的源DataTable与控件绑定 您可以以DataTable 那么我如何才能完成任务呢?下面的代码将帮助您实现您的需求 IEnumerable<DataRow> data = from dt in dtTemp.AsEnumerable() orderby dt.Field<Int32>("
DataTable
。我希望在不创建副本的情况下对特定列进行排序。我也尝试过使用DataTable.Select()
,但它需要为排序后的输出创建新表,这对我来说不起作用,因为我的源DataTable与控件绑定
您可以以DataTable
那么我如何才能完成任务呢?下面的代码将帮助您实现您的需求
IEnumerable<DataRow> data = from dt in dtTemp.AsEnumerable()
orderby dt.Field<Int32>("IDColumn"), dt.Field<String>("NameColumn") ascending
select dt;
IEnumerable data=来自dtTemp.AsEnumerable()中的dt
orderby dt.Field(“IDColumn”),dt.Field(“NameColumn”)升序
选择dt;
以下代码为例:
DataTable dt = new DataTable();
//Populate dt here
dt.DefaultView.Sort = string.Format("{0} {1}", "column name here", "ASC"); //sort ascending
dt = dt.DefaultView.ToTable();
这里有一个ans:我已经通过了这个链接。在建议的链接中,它将创建
DataTable
的副本,以获得排序输出。在我的例子中,我希望对相同的DataTable
应用排序。请务必让我知道更多信息。dt.DefaultView.Sort=sortExpression;在这种情况下,我无法在表“dt”中看到排序后的输出。所以结果不会反映在绑定控件中。它会排序dtTemp
?排序后的数据将在数据中可用,对吗?那么它是如何回答这个问题的呢?排序将不会应用于dtTempDataTable
,但是使用上面的代码,我可以按排序的顺序获得rows集合,因此使用该集合,我将导入bindedDataTable
.dt.DefaultView.ToTable()中的行;将创建带有排序输出的新datatable,这在我的案例中不是必需的。