am在C# asp.net
项目中使用DataTable
。我想在DataTable
上应用sorting
。
-
我有两种方法可以做到这一点,如下所示。
- 使用
DefaultView
- 使用
DataTable dt= GetDataFromDB(); // Method to fetch Data.
dt.DefaultView.Sort = "colName" + " " + "ASC";
dt= dt.DefaultView.ToTable();
- 使用
DataView.Sort
DataView sortedView = new DataView(ViewState["dt"] as DataTable);
sortedView.Sort = "colName" + " " + "ASC";
// ViewState["dt"] is defined in Page_Load event in my Page.
- 两者对我来说都很好,但我想知道它们之间的区别,以及在性能方面哪一个更好
- 注意:我正在处理大量数据(40000-60000条记录。)
DataTable.DefaultView属性根据需要提供DataView类的实例。因此,在性能方面,它们是相同的。
问题中示例代码的主要问题是将DataTable存储在ViewState中,如果DataTable的大小较大,则会导致性能问题。
此外,您可以始终将控件作为绑定到DataView
dt= dt.DefaultView.ToTable();
将在内存中复制该表,因为它将创建一个新表来提供排序后的数据。。导致更多的内存使用!
我认为创建一个新的DataView更好,但不是像以前那样。DataView创建索引,默认情况下它可能是项的ID。更改"排序"属性时,将创建新索引。因此,当您使用DefaultView和Sort属性时,代码需要创建2个索引。当您使用DataView的重载构造函数(可以在其中声明排序查询)时,您将只创建一个索引:https://msdn.microsoft.com/pl-pl/library/8sd1cd0a(v=vs.110).aspx