在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.今天突然跟前端有一点小小的分歧,传输数据和数据库里的数据做比对,该前端做处理还是后端,(并不是都不愿意做,相反,都愿意在自己那端处理= =) 2.最后终于归结我这了,好久之前做过list比对,记得刚写代码的时候,两个list比对?那就无限foreach呗,当然实现是能实现,这就很影响比对效果和代码的整洁度了。 3.接下来,我回忆起来了我之前写过的一个比较方法,拿出来记录一下 //重写比较方法 public class SkuEqualityComparer : IEqualityComparer<Sku> { public bool Equals(Sku x, Sku y) { return x.color== y.color&& x.itemno== y.itemno&& x.size== y.size; } public int GetHashCode(Sku obj) { if (obj == null) { return 0; } else { return obj.ToString().GetHashCode(); } } } 我重写了一个根据sku的颜色,货号,尺寸来比较的equality方法,接下来添加sku的list public Tuple<bool, string> AddSku(List<Sku> model) { List<string> list = new List<string>(); //假设从数据库查出来1,2,5 var isExsit = _skuRepository.GetSkuList(where);//where条件此处省略 //前端传来的model 2,3,4,5 //那么我需要比对出来的是2,5 if (isExsit.Count() > 0) { //只取出sku颜色,货号,尺码相同的交集(2,5) var sqlData = model.Intersect(isExsit, new SkuEqualityComparer()).ToList(); //遍历当前list foreach (var item in sqlData) { //查询当前数据信息(2) var sku= _skuRepository.GetSkuList(where1).FirstOrDefault();//where1条件此处省略 //对比客户端的(2)和数据库的(2)有效期是否相同 if (item.price!= sku.price) { //如果有效期不同,则在记录表插入 list.Add($"insert into skuInfo (name) values ('sku的name')"); } } list.Add($"delete from Sku where 1=1 {where}"); return _skuRepository.AddSkuInfo(model, list); } else { return _skuRepository.AddSkuInfo(model, list); } } 好啦,这样我们就很好的解决了后端和前端的数据传输问题。 纯属记录一下,今天回想十分钟才想起来= = |
请发表评论