描述:最近接到个项目、有个功能需求是这样的:每隔半小时A系统需要自动同步B系统的组织人员
构思:
通过windows自动服务,设置定时任务,每个半小时获取B系统组织人员,对比A系统,进行增量添加及减量删除操作
这里其实高中学的交集、并集、补集就可以体现作用了
具体思路如下:
var data_a=bll.getlist();//A公司组织数据
var data_b=api.getlist();//通过接口获取B组织架构
//这里我们可以先获取a和b列表的id集合
var arr_a=data_a.select(t=>t.id).toArray();//A公司id数组
var arr_b=data_b.select(t=>t.id).toArray();//B公司id数组
//接下来定义数组c获取A和B的交集
var arr_c=arr_a.Intersect(arr_b).toArray();
//这里获取减量
var diffArr_a = arr_a.Where(c => !arr_c.Contains(c)).ToArray();
//获取增量
var diffArr_b = arr_b.Where(c => !arr_c.Contains(c)).ToArray();
接下来就只需要对数组diffArr_a 及数组 diffArr_b进行循环删除及添加操作即可