对比两个同类型的泛型集合并返回差异泛型集合 ——两个List<类名>的比较
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<类名>的比较的更多相关文章
- java 两个int类型的数据相除并输出百分号保留两位有效数字
java代码: public void IntA(int a , int b){ //首先判断分母不能为0 if(b!=0){ folat num = (float) a*100/b; Decimal ...
- 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...
- java返回集合为null还是空集合
个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null. 那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为n ...
- java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法
问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...
- Java基础学习笔记十五 集合、迭代器、泛型
Collection 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都 ...
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
- Java——Collection集合、迭代器、泛型
集合 ——集合就是java提供的一种容器,可以用来存储多个数据. 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. 集合存储的都是对象 ...
- day08 集合API | 遍历_ | 泛型 |增强For循环
集合(续) 集合间的操作 集合提供了如取并集,删交集,判断包含子集等操作 package collection; import java.util.ArrayList; import java.uti ...
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
内省的简单运用: JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则. 采用遍历BeanInfo的所有属性方式来查找和 ...
随机推荐
- JavaScript专业规则12条
学习JavaScript是困难的.它发展的如此之快,以至于在任何一个特定的时刻,你都不清楚自己是否“做错了”.有些时候,感觉像是坏的部分超过了好的部分.然而,讨论这些并没有意义,JavaScript正 ...
- SQL Server 2008 备份改进版
1.Add compressing function with 7-Zip 2.With tool win.rar code so you can change it if you want USE ...
- 三角剖分求多边形面积的交 HDU3060
//三角剖分求多边形面积的交 HDU3060 #include <iostream> #include <cstdio> #include <cstring> #i ...
- 常用SQL整理
整理了日常用到的一些sqls 1.插入表 insert into table_B select * from table_A 2.清空表 truncate table test #清空表,结构还存在d ...
- 【多线程】Java线程面试题 Top 50(转载)
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎 ...
- Connecting Physics Bodies
[Connecting Physics Bodies] The kinds of joints you can create in Sprite Kit. You add or remove join ...
- Mysql捕捉(网站)应用执行的语句
如题,很多时候我们需要知道某个程序或者网站链接到额数据库到底执行了什么语句,对于MSsql来说, 比较简单,有相对应的事件查看器,但是对于mysql来说,并没有这个组件或者相关配套工具,此时我们可以 ...
- java getEnv不区分大小写 getProperty区分大小写
System.out.println(System.getenv("JAVA_HOME")); System.out.println(System.getenv("Pat ...
- Codeforces 687C. The Values You Can Make (dp)
题目链接:http://codeforces.com/problemset/problem/687/C 题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的 ...
- js get 传参 汉字 乱码问题
js encodeURI(encodeURI(searchWord)) java URLDecoder.decode(searchWord,"utf-8")