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);
                            }

    好了~ 收工~~

  • 相关阅读:
    贪心例题
    第十六周总结
    软件工程个人课程总结
    冲刺二十一天
    浅谈async/await
    浅谈设计模式的六大原则
    dotnetcore配置框架简介
    这一次,终于弄懂了协变和逆变
    科个普:进程、线程、并发、并行
    五分钟了解Semaphore
  • 原文地址:https://www.cnblogs.com/wqtmelo/p/11792754.html
Copyright © 2011-2022 走看看