比較2個(gè)datatable內(nèi)容是否相同的方法
DataTable可以通過(guò)RowStatus來(lái)判斷狀態(tài)是否發(fā)生了改變。但是有些時(shí)候我們希望在行狀態(tài)即使為Modified的情況下也不要提示內(nèi)容發(fā)生了變化,這個(gè)時(shí)候我們可能就需要自己寫方法去判斷了。比如有一個(gè)DataTable中有選擇列的狀態(tài)發(fā)生了變化,但是我在保存時(shí)不希望系統(tǒng)判斷DataTable的行狀態(tài)發(fā)生了變化而將數(shù)據(jù)重新更新到數(shù)據(jù)庫(kù)中。
這樣我們可以將需要判斷DataTable中那些列變化時(shí)才需要保存了。以下是比較2個(gè)DataTable的內(nèi)容是否相同的方法:
/// <summary>
/// 比較兩個(gè)DataTable內(nèi)容是否相等,先是比數(shù)量,數(shù)量相等就比內(nèi)容
/// </summary>
/// <param name= "dtA "> </param>
/// <param name= "dtB "> </param>
private bool CompareDataTable(DataTable dtA, DataTable dtB)
{
if (dtA.Rows.Count == dtB.Rows.Count)
{
if (CompareColumn(dtA.Columns, dtB.Columns))
{
//比內(nèi)容
for (int i = 0; i < dtA.Rows.Count; i++)
{
for (int j = 0; j < dtA.Columns.Count; j++)
{
if (!dtA.Rows[i][j].Equals(dtB.Rows[i][j]))
{
return false;
}
}
}
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/// <summary>
/// 比較兩個(gè)字段集合是否名稱,數(shù)據(jù)類型一致
/// </summary>
/// <param name= "dcA "> </param>
/// <param name= "dcB "> </param>
/// <returns> </returns>
private bool CompareColumn(System.Data.DataColumnCollection dcA, System.Data.DataColumnCollection dcB)
{
if (dcA.Count == dcB.Count)
{
foreach (DataColumn dc in dcA)
{
//找相同字段名稱
if (dcB.IndexOf(dc.ColumnName) > -1)
{
//測(cè)試數(shù)據(jù)類型
if (dc.DataType != dcB[dcB.IndexOf(dc.ColumnName)].DataType)
{
return false;
}
}
else
{
return false;
}
}
return true;
}
else
{
return false;
}
}
- datatable生成excel和excel插入圖片示例詳解
- c#將list類型轉(zhuǎn)換成DataTable方法示例
- 多個(gè)jquery.datatable共存,checkbox全選異常的快速解決方法
- DataTables List互相轉(zhuǎn)換的實(shí)現(xiàn)類示例
- 使用DataTable.Select 方法時(shí),特殊字符的轉(zhuǎn)義方法分享
- ASP.NET中DataTable與DataSet之間的轉(zhuǎn)換示例
- 多個(gè)datatable共存造成多個(gè)表格的checkbox都被選中
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
- datatable行轉(zhuǎn)列示例分享
相關(guān)文章
C#查找素?cái)?shù)實(shí)現(xiàn)方法
這篇文章主要介紹了C#查找素?cái)?shù)實(shí)現(xiàn)方法,程序中有很多使用的功能模塊,非常適合C#初學(xué)者學(xué)習(xí)借鑒,需要的朋友可以參考下2014-08-08
C#驗(yàn)證用戶輸入信息是否包含危險(xiǎn)字符串的方法
這篇文章主要介紹了C#驗(yàn)證用戶輸入信息是否包含危險(xiǎn)字符串的方法,可針對(duì)and、or、exec、insert、select等SQL操作技巧進(jìn)行過(guò)濾操作,非常具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法
這篇文章主要介紹了vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
C#通過(guò)XML節(jié)點(diǎn)屬性/屬性值讀取寫入XML操作代碼實(shí)例
本文主要介紹C#通過(guò)XML節(jié)點(diǎn)屬性、屬性值對(duì)XML的讀取,寫入操作,大家參考使用吧2013-11-11

