複製鏈接
請複製以下鏈接發送給好友

數據表

鎖定
是一個臨時保存數據的網格虛擬表(表示內存中數據的一個表。)。DataTable是ADO dot net 庫中的核心對象。它可以被應用在 VB 和 ASP 上。它無須代碼就可以簡單的綁定數據庫。它具有微軟風格的用户界面。
其他使用DataTable的對象包括DataSet和DataView。
中文名
數據表
外文名
DataTable
類    別
ADO dot net 庫中的核心對象
應    用
VB和ASP 上

數據表基本信息

DataTable 是一個臨時保存數據的網格虛擬表(表示內存中數據的一個表)。DataTable是ADO dot net 庫中的核心對象。它可以被應用在 VB 和 ASP 上。它無須代碼就可以簡單的綁定數據庫。它具有微軟風格的用户界面
其他使用DataTable的對象包括DataSet和DataView。

數據表注意事項

當訪問DataTable對象時,請注意它們是按條件區分大小寫的。例如,如果一個DataTable被命名為“mydatatable”,另一個被命名為“Mydatatable”,則用於搜索其中一個表的字符串被認為是區分大小寫的。但是,如果“mydatatable”存在而“Mydatatable”不存在,則認為該搜索字符串不區分大小寫。一個DataSet可以包含數個DataTable對象,它們具有相同的TableName屬性值和不同的Namespace屬性值。有關使用DataTable對象的更多信息。

數據表用法介紹

創建 DataTable
DataTable 表示一個內存內關係數據的表,可以獨立創建和使用,也可以由其他 .NET Framework 對象使用,最常見的情況是作為 DataSet 的成員使用。
可以使用相應的 DataTable 構造函數創建 DataTable 對象。 可以通過使用 Add 方法將其添加到 DataTable 對象的 Tables 集合中,將其添加到 DataSet 中。
也可以通過以下方法創建 DataTable 對象:使用 DataAdapter 對象的 Fill 方法或 FillSchema 方法在 DataSet 中創建,或者使用 DataSetReadXmlReadXmlSchema InferXmlSchema 方法從預定義的或推斷的 XML 架構中創建。 請注意,將一個 DataTable 作為成員添加到一個 DataSetTables 集合中後,不能再將其添加到任何其他 DataSet 的表集合中。
初次創建 DataTable 時,是沒有架構(即結構)的。 要定義表的架構,必須創建 DataColumn 對象並將其添加到表的 Columns 集合中。 您也可以為表定義主鍵列,並且可以創建Constraint 對象並將其添加到表的 Constraints 集合中。 在為 DataTable 定義了架構之後,可通過將 DataRow 對象添加到表的 Rows 集合中來將數據行添加到表中。
創建 DataTable 時,不需要為 TableName 屬性提供值,您可以在其他時間指定該屬性,或者將其保留為空。 但是,在將一個沒有 TableName 值的表添加到 DataSet 中時,該表會得到一個從“Table”(表示 Table0)開始遞增的默認名稱 Tablen
DataTable 架構定義
表的架構(即結構)由列和約束表示。 使用 DataColumn 對象以及 ForeignKeyConstraint 和 UniqueConstraint 對象定義 DataTable 的架構。 表中的列可以映射到數據源中的列、包含從表達式計算所得的值、自動遞增它們的值,或包含主鍵值。
按名稱引用表中的列、關係和約束是區分大小寫的。 因此,一個表中可以存在兩個或兩個以上名稱相同(但大小寫不同)的列、關係或約束。 例如,您可以有 Col1col1。 在這種情況下,按名稱引用某一列就必須完全符合該列名的大小寫,否則會引發異常。 例如,如果表 myTable 包含列 Col1 和列 col1,就要以 myTable.Columns["Col1"] 的形式來按名稱引用 Col1,而以 myTable.Columns["col1"] 的形式按名稱引用col1。 嘗試以 myTable.Columns["COL1"] 的形式來引用其中某列就會產生異常。
如果某個特定名稱只存在一個列、關係或約束,則不應用區分大小寫規則。 也就是説,如果表中沒有其他的列、關係或約束對象與該特定列、關係或約束對象的名稱匹配,您就可以使用任意的大小寫來按名稱引用該對象,並且不會引發異常。 例如,如果表中只有 Col1,您就可以使用 my.Columns["COL1"] 來引用。
在 DataTable 中處理數據
在 DataSet 中創建 DataTable 之後,您執行的活動可以與使用數據庫中的表時執行的活動相同。 您可以添加、查看、編輯和刪除表中的數據;可以監視錯誤和事件;並且可以查詢表中的數據。 在修改 DataTable 中的數據時,您也可以驗證更改是否正確,並決定是否以編程方式接受更改或拒絕更改。
  • 向數據表中添加數據
  • 説明如何創建新行並將它們添加到表中。
  • 查看數據表中的數據
  • 説明如何訪問行中的數據,包括數據的原始版本和當前版本。
  • Load 方法
  • 説明如何通過 Load 方法使用行填充 DataTable
  • DataTable 編輯
  • 説明如何修改行中的數據,包括掛起對行的更改,直至驗證並接受了建議的更改。
  • 行狀態與行版本
  • 提供有關行的不同狀態的信息。
  • DataRow 刪除
  • 説明如何從表中移除行。
  • 行錯誤信息
  • 説明如何插入每行的錯誤信息,幫助解決應用程序中的數據問題。
  • AcceptChanges 和 RejectChanges
  • 説明如何接受或拒絕對行的更改。
構造函數
初始化 DataTable 類的新實例。
重載此成員。有關此成員的完整信息(包括語法、用法和示例),請單擊重載列表中的相應名稱。
名稱
説明
DataTable()
不帶參數初始化 DataTable 類的新實例。
DataTable(String)
用指定的表名初始化 DataTable 類的新實例。
DataTable(SerializationInfo, StreamingContext)
使用 SerializationInfo 和 StreamingContext 初始化 DataTable 類的新實例。
DataTable(String, String)
用指定的表名和命名空間初始化 DataTable 類的新實例。
屬性
名稱
説明
CaseSensitive
指示表中的字符串比較是否區分大小寫。
ChildRelations
獲取此 DataTable 的子關係的集合。
Columns
獲取屬於該表的列的集合。
Constraints
獲取由該表維護的約束的集合。
Container
獲取組件的容器。 (繼承自 MarshalByValueComponent。)
DataSet
獲取此表所屬的 DataSet。
DefaultView
獲取可能包括篩選視圖或遊標位置的表的自定義視圖。
DesignMode
獲取指示組件當前是否處於設計模式的值。 (繼承自 MarshalByValueComponent。)
DisplayExpression
獲取或設置一個表達式,該表達式返回的值用於表示用户界面中的此表。 DisplayExpression 屬性用於在用户界面中顯示此表的名稱。
Events
獲取附加到該組件的事件處理程序的列表。 (繼承自 MarshalByValueComponent。)
ExtendedProperties
獲取自定義用户信息的集合。
HasErrors
獲取一個值,該值指示該表所屬的 DataSet 的任何表的任何行中是否有錯誤。
IsInitialized
獲取一個值,該值指示是否已初始化 DataTable。
Locale
獲取或設置用於比較表中字符串的區域設置信息。
MinimumCapacity
獲取或設置該表最初的起始大小。
Namespace
獲取或設置 DataTable 中所存儲數據的 XML 表示形式的命名空間。
ParentRelations
獲取該 DataTable 的父關係的集合。
Prefix
獲取或設置 DataTable 中所存儲數據的 XML 表示形式的命名空間。
PrimaryKey
獲取或設置充當數據表主鍵的列的數組。
RemotingFormat
獲取或設置序列化格式。
Rows
獲取屬於該表的行的集合。
Site
獲取或設置 DataTable 的 System.ComponentModel.ISite。 (重寫 MarshalByValueComponent.Site。)
TableName
獲取或設置 DataTable 的名稱。
顯式接口實現
名稱
説明
IListSource.GetList
有關此成員的説明,請參見 IListSource.GetList。
IXmlSerializable.GetSchema
有關此成員的説明,請參見 IXmlSerializable.GetSchema。
IXmlSerializable.ReadXml
有關此成員的説明,請參見 IXmlSerializable.ReadXml。
IXmlSerializable.WriteXml
有關此成員的説明,請參見 IXmlSerializable.WriteXml。
方法
名稱
説明
AcceptChanges
提交自上次調用 AcceptChanges 以來對該表進行的所有更改。
BeginInit
開始初始化在窗體上使用或由另一個組件使用的 DataTable。 初始化發生在運行時。
BeginLoadData
在加載數據時關閉通知、索引維護和約束。
Clear
清除所有數據的 DataTable。
Clone
克隆 DataTable 的結構,包括所有 DataTable 架構和約束。
Compute
計算用來傳遞篩選條件的當前行上的給定表達式。
Copy
複製該 DataTable 的結構和數據。
CreateDataReader
返回與此 DataTable 中的數據相對應的 DataTableReader。
CreateInstance
基礎結構。創建 DataTable 的一個新實例。
Dispose()
釋放由 MarshalByValueComponent 使用的所有資源。 (繼承自 MarshalByValueComponent。)
Dispose(Boolean)
釋放由 MarshalByValueComponent 佔用的非託管資源,還可以另外再釋放託管資源。 (繼承自 MarshalByValueComponent。)
EndInit
結束在窗體上使用或由另一個組件使用的 DataTable 的初始化。 初始化發生在運行時。
EndLoadData
在加載數據後打開通知、索引維護和約束。
Equals(Object)
確定指定的對象是否等於當前對象。 (繼承自 Object。)
Finalize
允許對象在“垃圾回收”回收之前嘗試釋放資源並執行其他清理操作。 (繼承自 MarshalByValueComponent。)
GetChanges()
獲取 DataTable 的副本,該副本包含自加載以來或自上次調用 AcceptChanges 以來對該數據集進行的所有更改。
GetChanges(DataRowState)
獲取由 DataRowState 篩選的 DataTable 的副本,該副本包含上次加載以來或調用 AcceptChanges 以來對該數據集進行的所有更改。
GetDataTableSchema
該方法返回一個包含 Web 服務描述語言 (WSDL) 的 XmlSchemaSet 實例,該語言描述了用作 Web 服務的 DataTable。
GetErrors
獲取包含錯誤的 DataRow 對象的數組。
GetHashCode
作為默認哈希函數。 (繼承自 Object。)
GetObjectData
用序列化 DataTable 所需的數據填充序列化信息對象。
GetRowType
基礎結構。獲取行類型。
GetSchema
基礎結構。有關此成員的説明,請參見 IXmlSerializable.GetSchema。
GetService
獲取 IServiceProvider 的實施者。 (繼承自 MarshalByValueComponent。)
GetType
獲取當前實例的 Type。 (繼承自 Object。)
ImportRow
將 DataRow 複製到 DataTable 中,保留任何屬性設置以及初始值和當前值。
Load(IDataReader)
通過所提供的 IDataReader,用某個數據源的值填充 DataTable。 如果 DataTable 已經包含行,則從數據源傳入的數據將與現有的行合併。
Load(IDataReader, LoadOption)
通過所提供的 IDataReader,用某個數據源的值填充 DataTable。 如果 DataTable 已包含行,則從數據源傳入的數據將根據loadOption 參數的值與現有的行合併。
Load(IDataReader, LoadOption, FillErrorEventHandler)
通過所提供的使用錯誤處理委託的 IDataReader 用某個數據源中的值填充 DataTable。
LoadDataRow(Object[], Boolean)
查找和更新特定行。 如果找不到任何匹配行,則使用給定值創建新行。
LoadDataRow(Object[], LoadOption)
查找和更新特定行。 如果找不到任何匹配行,則使用給定值創建新行。
MemberwiseClone
創建當前 Object 的淺表副本。 (繼承自 Object。)
Merge(DataTable)
將指定的 DataTable 與當前的 DataTable 合併。
Merge(DataTable, Boolean)
將指定的 DataTable 與當前的 DataTable 合併,指示是否在當前的 DataTable 中保留更改。
Merge(DataTable, Boolean, MissingSchemaAction)
將指定的 DataTable 與當前的 DataTable 合併,指示是否在當前的 DataTable 中保留更改以及如何處理缺失的架構。
NewRow
創建與該表具有相同架構的新 DataRow。
NewRowArray
基礎結構。返回 DataRow 的數組。
NewRowFromBuilder
從現有的行創建新行。
OnColumnChanged
引發 ColumnChanged 事件。
OnColumnChanging
引發 ColumnChanging 事件。
OnPropertyChanging
引發 PropertyChanged 事件。
OnRemoveColumn
通知 DataTable:DataColumn 正在被移除。
OnRowChanged
引發 RowChanged 事件。
OnRowChanging
引發 RowChanging 事件。
OnRowDeleted
引發 RowDeleted 事件。
OnRowDeleting
引發 RowDeleting 事件。
OnTableCleared
引發 TableCleared 事件。
OnTableClearing
引發 TableClearing 事件。
OnTableNewRow
引發 TableNewRow 事件。
ReadXml(Stream)
使用指定的 Stream 將 XML 架構和數據讀入 DataTable。
ReadXml(String)
將指定文件中的 XML 架構和數據讀入 DataTable 中。
ReadXml(TextReader)
使用指定的 TextReader 將 XML 架構和數據讀入 DataTable。
ReadXml(XmlReader)
使用指定的 XmlReader 將 XML 架構和數據讀入 DataTable。
ReadXmlSchema(Stream)
使用指定流將 XML 架構讀入 DataTable 中。
ReadXmlSchema(String)
將指定文件中的 XML 架構讀入 DataTable 中。
ReadXmlSchema(TextReader)
使用指定的 TextReader 將 XML 架構讀入 DataTable 中。
ReadXmlSchema(XmlReader)
使用指定的 XmlReader 將 XML 架構讀入 DataTable 中。
ReadXmlSerializable
基礎結構。從 XML 流中讀取。
RejectChanges
回滾自該表加載以來或上次調用 AcceptChanges 以來對該表進行的所有更改。
Reset
將 DataTable 重置為其初始狀態。 重置將移除表的所有數據、索引、關係和列。 如果數據集包含一個數據表,則在重置該表之後,它將仍是數據集的一部分。
Select()
獲取所有 DataRow 對象的數組。
Select(String)
獲取按與篩選條件相匹配的所有 DataRow 對象的數組。
Select(String, String)
獲取按照指定的排序順序且與篩選條件相匹配的所有 DataRow 對象的數組。
Select(String, String, DataViewRowState)
獲取與排序順序中的篩選器以及指定的狀態相匹配的所有 DataRow 對象的數組。
ToString
獲取 TableName 和 DisplayExpression(如果有一個用作連接字符串)。 (重寫 MarshalByValueComponent.ToString()。)
WriteXml(Stream)
使用指定的 Stream 以 XML 格式寫入 DataTable 的當前內容。
WriteXml(String)
使用指定的文件以 XML 格式寫入 DataTable 的當前內容。
WriteXml(TextWriter)
使用指定的 TextWriter 以 XML 格式寫入 DataTable 的當前內容。
WriteXml(XmlWriter)
使用指定的 XmlWriter 以 XML 格式寫入 DataTable 的當前內容。
WriteXml(Stream, Boolean)
使用指定的 Stream 以 XML 格式寫入 DataTable 的當前內容。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXml(Stream, XmlWriteMode)
使用指定的 XmlWriteMode 將 DataTable 的當前數據寫入指定的文件,還可以選擇將架構寫入指定的文件。 若要寫架構,請將mode 參數的值設置為 WriteSchema。
WriteXml(String, Boolean)
使用指定的文件以 XML 格式寫入 DataTable 的當前內容。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為true。
WriteXml(String, XmlWriteMode)
使用指定的文件和 XmlWriteMode,寫入 DataTable 的當前數據(還可以選擇寫入架構)。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。
WriteXml(TextWriter, Boolean)
使用指定的 TextWriter 以 XML 格式寫入 DataTable 的當前內容。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXml(TextWriter, XmlWriteMode)
使用指定的 TextWriter 和 XmlWriteMode 寫入 DataTable 的當前數據,還可以選擇寫入架構。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。
WriteXml(XmlWriter, Boolean)
使用指定的 XmlWriter 以 XML 格式寫入 DataTable 的當前內容。
WriteXml(XmlWriter, XmlWriteMode)
使用指定的 XmlWriter 和 XmlWriteMode 寫入 DataTable 的當前數據,還可以選擇寫入架構。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。
WriteXml(Stream, XmlWriteMode, Boolean)
使用指定的 XmlWriteMode 將 DataTable 的當前數據寫入指定的文件,還可以選擇將架構寫入指定的文件。 若要寫架構,請將mode 參數的值設置為 WriteSchema。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXml(String, XmlWriteMode, Boolean)
使用指定的文件和 XmlWriteMode,寫入 DataTable 的當前數據(還可以選擇寫入架構)。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXml(TextWriter, XmlWriteMode, Boolean)
使用指定的 TextWriter 和 XmlWriteMode 寫入 DataTable 的當前數據,還可以選擇寫入架構。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXml(XmlWriter, XmlWriteMode, Boolean)
使用指定的 XmlWriter 和 XmlWriteMode 寫入 DataTable 的當前數據,還可以選擇寫入架構。 若要寫架構,請將 mode 參數的值設置為 WriteSchema。 若要保存該表及其所有子代的數據,請將 writeHierarchy 參數設置為 true。
WriteXmlSchema(Stream)
將 DataTable 的當前數據結構以 XML 架構形式寫入指定的流。
WriteXmlSchema(String)
將 DataTable 的當前數據結構以 XML 架構形式寫入指定的文件。
WriteXmlSchema(TextWriter)
使用指定的 TextWriter 將 DataTable 的當前數據結構編寫為 XML 架構。
WriteXmlSchema(XmlWriter)
使用指定的 XmlWriter 將 DataTable 的當前數據結構以 XML 架構形式寫入。
WriteXmlSchema(Stream, Boolean)
將 DataTable 的當前數據結構以 XML 架構形式寫入指定的流。 若要保存該表及其所有子代的架構,請將 writeHierarchy 參數設置為 true。
WriteXmlSchema(String, Boolean)
將 DataTable 的當前數據結構以 XML 架構形式寫入指定的文件。 若要保存該表及其所有子代的架構,請將 writeHierarchy 參數設置為 true。
WriteXmlSchema(TextWriter, Boolean)
使用指定的 TextWriter 將 DataTable 的當前數據結構編寫為 XML 架構。 若要保存該表及其所有子代的架構,請將 writeHierarchy參數設置為 true。
WriteXmlSchema(XmlWriter, Boolean)
使用指定的 XmlWriter 將 DataTable 的當前數據結構以 XML 架構形式寫入。 若要保存該表及其所有子代的架構,請將writeHierarchy 參數設置為 true。
擴展方法
名稱
説明
AsDataView
創建並返回支持 LINQ 的 DataView 對象。 (由 DataTableExtensions 定義。)
AsEnumerable
返回一個 IEnumerable<T> 對象,其泛型參數 T 為 DataRow。 此對象可用在 LINQ 表達式或方法查詢中。 (由 DataTableExtensions 定義。)
DataTable 事件
名稱
説明
ColumnChanged
在 DataRow 中指定的 DataColumn 的值被更改後發生。
ColumnChanging
在 DataRow 中指定的 DataColumn 的值發生更改時發生。
Disposed
添加事件處理程序以偵聽組件上的 Disposed 事件。 (繼承自 MarshalByValueComponent。)
Initialized
初始化 DataTable 後發生。
RowChanged
在成功更改 DataRow 之後發生。
RowChanging
在 DataRow 正在更改時發生。
RowDeleted
在表中的行已被刪除後發生。
RowDeleting
在表中的行要被刪除之前發生。
TableCleared
清除 DataTable 後發生。
TableClearing
清除 DataTable 後發生。
TableNewRow
插入新 DataRow 時發生。

數據表實例化添加列

DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
DataRow dr = dt.NewRow();
object[] objs = { 1, "Name" };
dr.ItemArray = objs;
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;

數據表使用技巧

(1)CreateaDataTable DataTabledt=newDataTable("Table_AX");
(2)AddcolumnsforDataTable //Method1 dt.Columns.Add("column0",System.Type.GetType("System.String")); //Method2 DataColumndc=newDataColumn("column1",System.Type.GetType("System.Boolean")); dt.Columns.Add(dc); (3)AddrowsforDataTable //Initializetherow DataRowdr=dt.NewRow(); dr["column0"]="AX"; dr["column1"]=true; dt.Rows.Add(dr); //Doesn'tinitializetherow DataRowdr1=dt.NewRow(); dt.Rows.Add(dr1);
(4)Selectrow //Searchthesecondrow如果沒有賦值,則用isnull來select DataRow[]drs=dt.Select("column1isnull"); DataRow[]drss=dt.Select("column0='AX'");
(5)CopyDataTableincludedata DataTabledtNew=dt.Copy(); (6)CopyDataTableonlyscheme DataTabledtOnlyScheme=dt.Clone(); (7)Operateonerow //對dt的操作 //Method1 DataRowdrOperate=dt.Rows[0]; drOperate["column0"]="AXzhz"; drOperate["column1"]=false; //Method2 drOperate[0]="AXzhz"; drOperate[1]=false; //Method3 dt.Rows[0]["column0"]="AXzhz"; dt.Rows[0]["column1"]=false; //Method4 dt.Rows[0][0]="AXzhz"; dt.Rows[0][1]=false; (8)EvaluateanotherDataTable'srowtocurrentDatatable dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray); (9)Converttostring System.IO.StringWritersw=newSystem.IO.StringWriter(); System.Xml.XmlTextWriterxw=newSystem.Xml.XmlTextWriter(sw); dt.WriteXml(xw); strings=sw.ToString(); (10)FilterDataTable dt.DefaultView.RowFilter="column1<>true"; dt.DefaultView.RowFilter="column1=true"; (11)Sortrow dt.DefaultView.Sort="ID,NameASC"; dt=dt.DefaultView.ToTable(); (12)BindDataTable //綁定的其實是DefaultView gvTestDataTable.DataSource=dt; gvTestDataTable.DataBind(); (13)judgetheDataTable’sColumnnameisastring //判斷一個字符串是否為DataTable的列名 dtInfo.Columns.Contains("AX"); (14)DataTableconverttoXMLandXMLconverttoDataTable protectedvoidPage_Load(objectsender,EventArgse) { DataTabledt_AX=newDataTable(); //dt_AX.Columns.Add("Sex",typeof(System.Boolean)); //DataRowdr=dt_AX.NewRow(); //dr["Sex"]=true; //dt_AX.Rows.Add(dr); stringxml=ConvertBetweenDataTableAndXML_AX(dt_AX); DataTabledt=ConvertBetweenDataTableAndXML_AX(xml); } publicstringConvertBetweenDataTableAndXML_AX(DataTabledtNeedCoveret) { System.IO.TextWritertw=newSystem.IO.StringWriter(); //ifTableNameisempty,WriteXml()willthrowException.
dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName; dtNeedCoveret.WriteXml(tw); dtNeedCoveret.WriteXmlSchema(tw); returntw.ToString(); } publicDataTableConvertBetweenDataTableAndXML_AX(stringxml) { System.IO.TextReadertrDataTable=newSystem.IO.StringReader(xml.Substring(0,xml.IndexOf("<?xml"))); System.IO.TextReadertrSchema=newSystem.IO.StringReader(xml.Substring(xml.IndexOf("<?xml"))); DataTabledtReturn=newDataTable(); dtReturn.ReadXmlSchema(trSchema); dtReturn.ReadXml(trDataTable); returndtReturn; }

數據表數據複製

把datatable的結構全部數據或部分數據複製到一個新的datatable
datatable複製表結構:我們可以使用.clone()方法;
DataTable oldDT = GetDataTable();
DataTable newDT = oldDT.Clone();
把datatable中的所有信息複製到一個新的datatable,包括結構和數據:
DataTable oldDT = GetDataTable();
DataTable newDT = oldDT.Copy();
複製datatable中的某一行:我們可以使用.ImportRow()方法;
DataTable oldDT = GetDataTable();
DataTable newDT = new DataTable();
newDT.ImportRow(oldDT.Rows[1]);把原來datatable中的第二行數據複製到新的datatable中。