日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对比两个同类型的泛型集合并返回差异泛型集合 ——两个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类名的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。