- /// <summary>
- /// dataRow比较
- /// </summary>
- /// <param name="drA"></param>
- /// <param name="drB"></param>
- /// <param name="columnNames">需要比较的列名称</param>
- /// <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++;
- }
- }
- }
对象比较方法 CompareObject(object objA, object objB):
深拷贝部分代码:
C# 实体类序列化与反序列化一 (XmlSerializer)