分配一个新的DataTable, DataTable. clear (), DataTable. reset()和Dat

本文关键字:DataTable clear Dat reset 一个 分配 | 更新日期: 2023-09-27 18:15:43

我使用数据表将DataSource绑定到GridView。我是这样做的。

我如下声明了这个数据表。

 private DataTable dt_CompanyNames;
然后

private void get_CompanyNames()
{
     dt_CompanyNames = new DataTable();
     dt_CompanyNames = objDesignation_Bll.Get_CompanyNames();
     gridCompanies.DataSource = dt_CompanyNames;
     gridCompanies.DataBind();
}

所以我的问题是,如果我以以下方式做到这些呢?

首先我要做这个。

private DataTable dt_CompanyNames=new DataTable();

然后在我的方法中我使用这些语句。

方法1

 dt_CompanyNames.Clear();

方法2

 dt_CompanyNames.Rows.Clear(); 

方法3

 dt_CompanyNames.Reset();

4)或者我应该坚持我现有的方法?

dt_CompanyNames = new DataTable();

在这个方法中,每次调用这个函数时总是创建新的Datatable。好吗?

那么它们之间有什么区别呢?就效率而言,是否有一个比另一个更好?

分配一个新的DataTable, DataTable. clear (), DataTable. reset()和Dat

new DataTable()将一个新对象赋给引用的变量,默认情况下,所有元数据将从DataTable中删除。

DataTable.Clear()按MSDN

删除所有表中的所有行。将生成异常表具有任何强制的子关系,这些关系将导致子行是孤儿。

如果数据集绑定到xmldataddocument,调用DataSet。清晰的或数据表。Clear会引发NotSupportedException异常。为了避免这种情况情况下,遍历每个表,每次删除一行。当使用NewRow创建新行时,必须先处理这些行

From a Answer HERE

DataTable.Clear()和rows . clear()都将删除数据表,但不是列。它们都具有相同的功能,除了其中一个定义在dataTable类中,第二个定义在DataRowCollection类。