比较2个datatable内容是否相同的方法

 更新时间:2014年01月20日 16:50:20   作者:  
这篇文章主要介绍了比较2个datatable内容是否相同的方法,大家参考使用吧

DataTable可以通过RowStatus来判断状态是否发生了改变。但是有些时候我们希望在行状态即使为Modified的情况下也不要提示内容发生了变化,这个时候我们可能就需要自己写方法去判断了。比如有一个DataTable中有选择列的状态发生了变化,但是我在保存时不希望系统判断DataTable的行状态发生了变化而将数据重新更新到数据库中。
 这样我们可以将需要判断DataTable中那些列变化时才需要保存了。以下是比较2个DataTable的内容是否相同的方法:

 

复制代码 代码如下:

 ///   <summary>

///   比较两个DataTable内容是否相等,先是比数量,数量相等就比内容
///   </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))
{
    //比内容
    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>
///   比较两个字段集合是否名称,数据类型一致
///   </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)
    {
//测试数据类型
if (dc.DataType != dcB[dcB.IndexOf(dc.ColumnName)].DataType)
{
    return false;
}
    }
    else
    {
return false;
    }
}
return true;
    }
    else
    {
return false;
    }
}

相关文章

  • WinForm调用百度地图接口用法示例

    WinForm调用百度地图接口用法示例

    这篇文章主要介绍了WinForm调用百度地图接口用法,结合具体实例形式简单分析了WinForm WebBrower控件与前端百度接口交互的相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • C#编写的艺术字类实例代码

    C#编写的艺术字类实例代码

    本文给大家分享使用纯C#编写的艺术字类实例代码,代码简单易懂,需要的朋友参考下本教程
    2016-03-03
  • C#中DataSet、DataTable、DataRow数据的复制方法

    C#中DataSet、DataTable、DataRow数据的复制方法

    这篇文章介绍了C#中DataSet、DataTable、DataRow数据的复制方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • WPF中TreeView控件的用法

    WPF中TreeView控件的用法

    这篇文章介绍了WPF中TreeView控件的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • c#开发cad预览图块步骤详解

    c#开发cad预览图块步骤详解

    在本篇文章里小编给大家分享了关于c#开发cad预览图块步骤和相关知识点,需要的朋友们学习下。
    2019-02-02
  • C#中科学绘图库ScottPlot的使用详解

    C#中科学绘图库ScottPlot的使用详解

    ScottPlot是基于.Net的一款开源免费的交互式可视化库,支持Winform和WPF等UI框架,本文给大家介绍了C#中科学绘图库ScottPlot的使用方法,文中示例在WPF环境中运行,需要的朋友可以参考下
    2023-12-12
  • c# mutex互斥量的深入解析

    c# mutex互斥量的深入解析

    本篇文章主要是对c#中的mutex互斥量进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • Unity游戏开发中必备的设计模式之外观模式详解

    Unity游戏开发中必备的设计模式之外观模式详解

    外观模式是一种结构型设计模式,为复杂系统提供了简单的接口,使得子系统间的通信更加简洁和易于维护。在Unity游戏开发中,外观模式可以帮助开发者更好地管理游戏对象和组件等复杂结构
    2023-05-05
  • C#中38个常用运算符的优先级的划分和理解

    C#中38个常用运算符的优先级的划分和理解

    这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享
    2012-08-08
  • C#装箱与拆箱操作的深入讲解

    C#装箱与拆箱操作的深入讲解

    这篇文章主要给大家介绍了关于C#装箱与拆箱操作的相关资料,文中通过图文介绍的非常详细,对大家的学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03

最新评论