C# DataRow 比较

简介: /// <summary> /// dataRow比较 /// </summary> /// <param name="drA"></param> /// <param name="drB"></param> /// <param n
 
  /// <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# 对象比较(值类型、引用类型)


深拷贝部分代码:

C# 实体类序列化与反序列化一 (XmlSerializer)


C# 实体类序列化与反序列化二 (DataContractSerializer)



目录
相关文章
|
Web App开发 JavaScript 前端开发
转一个dataTable的使用
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.
1964 0
将dataGridView数据转成DataTable
如已绑定过数据源: DataTable dt = (dataGridView1.DataSource as DataTable) 如未绑定过数据源:public DataTable GetDgvToTable(DataGridView dgv)     ...
1468 0
datagridview与contextmenustrip完美结合应用
上图是最佳datagridview与contextmenustrip合用效果,方法是: 而当两个以上的datagridview共同使用一个ContextMenuStrip时,【打开】【关闭】处理事件识别SourceControl的方...
1170 0
C# DataRow 比较
/// &lt;summary&gt; /// dataRow比较 /// &lt;/summary&gt; /// &lt;param name="drA"&gt;&lt;/param&gt; /// &lt;param name="drB"&gt;&lt;/param&gt; /// &lt;param n
2255 0
C# DataRow.ItemArray 属性
DataRow.ItemArray 属性 通过一个数组来获取或设置此行的所有值。 命名空间:System.Data程序集:System.Data(在 system.data.dll 中) 代码示例: private void CreateRowsWithItemArray() { // Make a DataTable using the function below.
1798 0