1:  /// <summary>
   2:  /// 对比两个同类型的泛型集合并返回差异泛型集合
   3:  /// </summary>
   4:  /// <typeparam name="T">泛型类型</typeparam>
   5:  /// <param name="newModel">修改后的数据集合</param>
   6:  /// <param name="oldModel">原始数据集合</param>
   7:  /// <returns>返回与原始集合有差异的集合</returns>
   8:  public static List<T> GetModiflyList<T>(List<T> newModel, List<T> oldModel)
   9:  {
  10:      List<T> list = new List<T>();
  11:      foreach (T newMod in newModel)
  12:      {
  13:          bool IsExist = false;
  14:          foreach (T oldMol in oldModel)
  15:          {
  16:              //取得老实体对象的属性集合
  17:              PropertyInfo[] pi = oldMol.GetType().GetProperties();
  18:              //定义记数器
  19:              int i = 0;
  20:   
  21:              //将老实体对象的没一个属性值和新实体对象进行循环比较
  22:              foreach (PropertyInfo p in pi)
  23:              {
  24:                  //防止object.Equals时实例化对象发生异常
  25:                  object o_new = newMod.GetType().GetProperty(p.Name).GetValue(newMod, null);
  26:                  if (o_new == null)
  27:                      o_new = (object)String.Empty;
  28:   
  29:                  //防止object.Equals时实例化对象发生异常
  30:                  object o_old = p.GetValue(oldMol, null);
  31:                  Type type = o_old.GetType();
  32:                  if (type.Name == "ExtensionDataObject")
  33:                  {
  34:                      i++;
  35:                  }
  36:                  if (o_old == null)
  37:                      o_old = (object)String.Empty;
  38:   
  39:                  //新老实体比较并记录成功次数
  40:                  if (object.Equals(o_new, o_old))
  41:                  {
  42:                      i++;
  43:                  }
  44:                  //若成功次数和属性数目相等则说明已经存在或者没有发生过修改条出循环
  45:                  if (i == pi.Length)
  46:                  {
  47:                      IsExist = true;
  48:                      break;
  49:                  }
  50:              }
  51:   
  52:              //没有发生过修改条出循环
  53:              if (IsExist)
  54:                  break;
  55:          }
  56:   
  57:          //如果不存在则添加该实体到List<T>中
  58:          if (!IsExist)
  59:              list.Add(newMod);
  60:   
  61:      }
  62:      return list;
  63:  }

对比两个同类型的泛型集合并返回差异泛型集合 ——两个List<类名>的比较的更多相关文章

  1. java 两个int类型的数据相除并输出百分号保留两位有效数字

    java代码: public void IntA(int a , int b){ //首先判断分母不能为0 if(b!=0){ folat num = (float) a*100/b; Decimal ...

  2. 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解

    1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...

  3. java返回集合为null还是空集合

    个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null. 那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为n ...

  4. java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法

    问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...

  5. Java基础学习笔记十五 集合、迭代器、泛型

    Collection 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都 ...

  6. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  7. Java——Collection集合、迭代器、泛型

    集合 ——集合就是java提供的一种容器,可以用来存储多个数据. 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. 集合存储的都是对象 ...

  8. day08 集合API | 遍历_ | 泛型 |增强For循环

    集合(续) 集合间的操作 集合提供了如取并集,删交集,判断包含子集等操作 package collection; import java.util.ArrayList; import java.uti ...

  9. Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合

    内省的简单运用: JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则. 采用遍历BeanInfo的所有属性方式来查找和 ...

随机推荐

  1. Windows下Cygwin中使用NCView

    1. 使用cygwin的setup.exe安装 NetCDF, HDF5, Curl, libXaw, libICE, udunits, libexpat 和 libpng: 在选择库界面搜索:&qu ...

  2. C# 一个简单的秒表引发的窗体卡死问题

    一个秒表程序也是我的一个心病,因为一直想写这样的一个东西,但是总往GUI那边想,所以就比较怵,可能是上学的时候学MFC搞出的后遗症吧,不过当我今天想好用Win Form(话说还是第一次写win for ...

  3. JQuery中的事件以及动画

    .bind事件 <script src="script/jquery-1.7.1.min.js"></script> <script> $(fu ...

  4. c语言的几个重要知识点

      内存结构 这是核心中的核心,请仔细看完,充分理解,否则请不要看下一节内容. 每个程序一启动都有一个大小为4GB的内存,这个内存叫虚拟内存,是概念上的,真正能用到的,只是很小一部分,一般也就是在几百 ...

  5. 如何开启php报错

    今天碰到一个很二的问题,安装了php网站之后,发现nginx一直无法解析到index.php文件,显示为空白,从后台的日志来看是500错误,但是同目录下的phpinfo.php却可以正常解析.想来应该 ...

  6. pku3277 City Horizon

    http://poj.org/problem?id=3277 线段树,离散化,成段更新 #include <stdio.h> #include <stdlib.h> #defi ...

  7. Cocos2d-JS v3.0 alpha不支持cocos2d-x的Physics integration

    cocos2d-x 3.0新的Physics integration,把chipmunk和Box2D封装到引擎内部 auto scene = Scene::createWithPhysics(); s ...

  8. shell学习目录

    1. 了解shell 2. shell 入门基础 3. Shell脚本文件中常用的操作语句

  9. SharePoint咨询师之路:备份和恢复系列--制定备份计划

    本来想研究下如何做数据库服务器的集群,然而突然被同事问起如何在部署SharePoint服务场的时候做备份和恢复的计划,就先来复习和研究一下. 本系列包括: 备份服务器场和配置 备份web和服务应用程序 ...

  10. 一些推荐的spark/hadoop课程

    为了分享给你们,也为自己. 感谢下面的老师们! 1.王家林DT大数据梦工厂的大数据IMF传奇行动课程 总的目录是: 第一阶段:Linux和Java零基础企业级实战 第二阶段:Hadoop和Hive零基 ...