C# DataRow 比较
c# 比较
2023-09-14 09:03:17 时间
/// returns /returns
public static bool DataRowCompare(DataRow drA, DataRow drB, string[] columnNames)
bool flag = false;
//DataRow 中需要比较的列排序
ColumnSort(drA, columnNames);
ColumnSort(drB, columnNames);
foreach (DataColumn dcA in drA.Table.Columns)
if (columnNames.Contains(dcA.ColumnName))
foreach (DataColumn dcB in drB.Table.Columns)
if (columnNames.Contains(dcB.ColumnName))
if (dcB.ColumnName == dcA.ColumnName)//列名比较
//类型比较
if (dcB.DataType != dcA.DataType)
flag = false;
break;
//值比较
else if (CompareObject(drA[dcB.ColumnName], drB[dcB.ColumnName]))
flag = true;
break;
return flag;
/// summary
/// 按照数组中列名顺序排序
/// /summary
/// param name="drA" /param
/// param name="columnNames" 按照数组中列名顺序排序 /param
public static void ColumnSort(DataRow drA, string[] columnNames)
//drA 排序
int i = 0;
foreach (string columnName in columnNames)
if (drA.Table.Columns.Contains(columnName))
drA.Table.Columns[columnName].SetOrdinal(i);
i++;
}
C# 实体类序列化与反序列化二 (DataContractSerializer)
对象比较方法 CompareObject(object objA, object objB):
深拷贝部分代码:
C# 实体类序列化与反序列化一 (XmlSerializer)C# 实体类序列化与反序列化二 (DataContractSerializer)