DataView.Sort和DataTable.DefaultView.Sort之间的差异



am在C# asp.net项目中使用DataTable。我想在DataTable上应用sorting

  • 我有两种方法可以做到这一点,如下所示。

    1. 使用DefaultView

DataTable dt= GetDataFromDB(); // Method to fetch Data. dt.DefaultView.Sort = "colName" + " " + "ASC"; dt= dt.DefaultView.ToTable();

  1. 使用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

最新更新