DataView.Sort和DataTable.DefaultView.Sort之间的区别?

时间:2015-02-06 11:28:41

标签: c# asp.net c#-4.0 datatable

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

  • 我有两种方法可以执行此操作,如下所示。

    1. 使用 DefaultView

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

  1. 使用 DataView.Sort
  2. 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条记录。)

2 个答案:

答案 0 :(得分:0)

DataTable.DefaultView属性根据需要提供DataView类的实例。因此,性能方面也是如此。

问题中示例代码的主要问题是将DataTable存储在ViewState中,如果DataTable的大小很大,将导致性能问题。

此外,您始终可以将控件绑定到DataView

dt= dt.DefaultView.ToTable();

将在内存中复制表,因为它将创建一个新表以提供已排序的数据..导致更多内存使用!

答案 1 :(得分:0)

我认为创建一个新的DataView更好,但是不像您那样做。 DataView创建索引,默认情况下它可能是项目的ID。更改“排序”属性时,将创建新索引。因此,当您使用DefaultView并使用Sort属性时,代码需要创建2个索引。当您使用DataView的重载构造函数时,可以在其中声明排序查询,您将仅创建单个索引:https://msdn.microsoft.com/pl-pl/library/8sd1cd0a(v=vs.110).aspx