1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<code>/// <summary></code>
<code> </code><code>/// 取兩個DataTable的交集,删除重複資料</code>
<code> </code><code>/// </summary></code>
<code> </code><code>/// <param name="sourceDataTable">源DataTable</param></code>
<code> </code><code>/// <param name="targetDataTable">目标DataTable</param></code>
<code> </code><code>/// <param name="primaryKey">兩個表的主鍵</param></code>
<code> </code><code>/// <returns>合并後的表</returns></code>
<code> </code><code>public</code>
<code>static</code> <code>DataTable Merge(DataTable sourceDataTable, DataTable targetDataTable,</code><code>string</code>
<code>primaryKey)</code>
<code> </code><code>{</code>
<code> </code><code>if</code>
<code>(sourceDataTable !=</code><code>null</code>
<code>|| targetDataTable !=</code><code>null</code>
<code>|| !sourceDataTable.Equals(targetDataTable))</code>
<code> </code><code>{</code>
<code> </code><code>sourceDataTable.PrimaryKey =</code><code>new</code>
<code>DataColumn[] { sourceDataTable.Columns[primaryKey] };</code>
<code> </code><code>DataTable dt = targetDataTable.Copy();</code>
<code> </code><code>foreach</code>
<code>(DataRow tRow</code><code>in</code>
<code>dt.Rows)</code>
<code> </code><code>{</code>
<code> </code><code>//拒絕自上次調用 System.Data.DataRow.AcceptChanges() 以來對該行進行的所有更改。</code>
<code> </code><code>//因為行狀态為DataRowState.Deleted時無法通路ItemArray的值</code>
<code> </code><code>tRow.RejectChanges();</code>
<code> </code><code>//在加載資料時關閉通知、索引維護和限制。</code>
<code> </code><code>sourceDataTable.BeginLoadData();</code>
<code> </code><code>//查找和更新特定行。如果找不到任何比對行,則使用給定值建立新行。</code>
<code> </code><code>DataRow temp = sourceDataTable.LoadDataRow(tRow.ItemArray,</code><code>true</code><code>);</code>
<code> </code><code>sourceDataTable.EndLoadData();</code>
<code> </code><code>sourceDataTable.Rows.Remove(temp);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>sourceDataTable.AcceptChanges();</code>
<code> </code><code>return</code>
<code>sourceDataTable;</code>
<code> </code><code>}</code>