Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataTable排序,无需创建新DataTable并维护RowState_C#_Datatable - Fatal编程技术网

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
?排序后的数据将在
数据中可用,对吗?那么它是如何回答这个问题的呢?排序将不会应用于dtTemp
DataTable
,但是使用上面的代码,我可以按排序的顺序获得rows集合,因此使用该集合,我将导入binded
DataTable
.dt.DefaultView.ToTable()中的行;将创建带有排序输出的新datatable,这在我的案例中不是必需的。