zoukankan      html  css  js  c++  java
  • List<model>需要根据特定字段求差集的实现

    list对象不能直接使用Except等封装好的函数,因为内存地址不一样(还有一些数虽然主数据一致但是update/create信息也不一致,对,我碰到的需求就是这么难受 TOT)

    这时候我们的需求很多时候是想通过特定字段来进行比较判断,所以我们需要重写GetHashCode()与Equals(object obj)来进行定义:

            public override int GetHashCode()
            {
                return this.attribute.GetHashCode();
            }
    
            public override bool Equals(object obj)
            {
                return this.attribute== (obj as model).attribute;
            }

    然后  我们就能愉快的求差集了,比如我的需求是list1-list2的集合进行update,list2-list1的集合进行insert:

     //获取差集
                            IEnumerable<T_CME_DifficultHospital> listUpdate = listDatabase.Except(listImport);
                            IEnumerable<T_CME_DifficultHospital> listInsert = listImport.Except(listDatabase);
                            //原数据有数据,但是新导入的没有的更新flag=0
                            foreach (T_CME_DifficultHospital difficultHosp in listUpdate)
                            {
                                difficultHosp.Flag = "0";
                                difficultHosp.UpdateTime = DateTime.Now;
                                difficultHosp.UpdateBy = this.ProcBasePage.CurrentUser.UserAccount;
                                DifficultHospitalManager.Instance.Update(difficultHosp);
                            }
                            //原数据没有该数据,新导入的有,则insert新数据
                            foreach (T_CME_DifficultHospital difficultHosp in listInsert)
                            {
                                DifficultHospitalManager.Instance.Create(difficultHosp);
                            }

    好了~ 收工~~

  • 相关阅读:
    计算机网络
    二叉树
    队列
    百度脑图-离线版(支持Linux、Mac、Win)
    nested exception is java.lang.NoClassDefFoundError: javax/xml/soap/SOAPElement
    手写注解实现SpringMVC底层原理(虽简单却五脏俱全《注重思路》)
    java异常
    JVM相关
    redis相关总结
    mysql 数据库相关
  • 原文地址:https://www.cnblogs.com/wqtmelo/p/11792754.html
Copyright © 2011-2022 走看看