比較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#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法
這篇文章介紹了C#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07C#中科學(xué)繪圖庫(kù)ScottPlot的使用詳解
ScottPlot是基于.Net的一款開(kāi)源免費(fèi)的交互式可視化庫(kù),支持Winform和WPF等UI框架,本文給大家介紹了C#中科學(xué)繪圖庫(kù)ScottPlot的使用方法,文中示例在WPF環(huán)境中運(yùn)行,需要的朋友可以參考下2023-12-12Unity游戲開(kāi)發(fā)中必備的設(shè)計(jì)模式之外觀模式詳解
外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,為復(fù)雜系統(tǒng)提供了簡(jiǎn)單的接口,使得子系統(tǒng)間的通信更加簡(jiǎn)潔和易于維護(hù)。在Unity游戲開(kāi)發(fā)中,外觀模式可以幫助開(kāi)發(fā)者更好地管理游戲?qū)ο蠛徒M件等復(fù)雜結(jié)構(gòu)2023-05-05C#中38個(gè)常用運(yùn)算符的優(yōu)先級(jí)的劃分和理解
這只我自己在學(xué)C#中的一些總結(jié),其中對(duì)于各級(jí)的劃分方式、各操作符的優(yōu)先級(jí)的理解并不見(jiàn)得正確,只是自己的看法,拿出來(lái)與大家分享2012-08-08