对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较
生活随笔
收集整理的這篇文章主要介紹了
对比两个同类型的泛型集合并返回差异泛型集合 ——两个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: }
轉載于:https://www.cnblogs.com/yexiaohui/p/3705572.html
總結
以上是生活随笔為你收集整理的对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “汉使却回凭寄语”下一句是什么
- 下一篇: 百威矿泉水330厘米的多少钱一箱?