am在DataTable
项目中使用C# asp.net
。我想在sorting
上应用DataTable
。
我有两种方法可以执行此操作,如下所示。
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.
答案 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