C#中关联请求响应数据获取商品折扣信息用于数据库更新
实现方案
首先需要定义对应请求、响应和目标格式的实体类,用于JSON序列化/反序列化:
// 请求实体 public class RequestItem { public int itemcode { get; set; } public decimal price { get; set; } public int Index { get; set; } } public class RequestModel { public List<RequestItem> Items { get; set; } } // 响应实体 public class DiscountInfo { public int id { get; set; } public int amoumt { get; set; } // 字段拼写与响应格式保持一致 } public class ResponseItem { public DiscountInfo discount { get; set; } public int Index { get; set; } } public class ResponseModel { public List<ResponseItem> Items { get; set; } } // 目标实体(用于数据库更新) public class TargetItem { public int itemCode { get; set; } public DiscountInfo discount { get; set; } } public class TargetModel { public List<TargetItem> items { get; set; } }
方案一:LINQ实现
利用LINQ的Join方法,通过Index字段关联请求与响应数据,直接映射为目标格式:
// 假设已获取到请求数据requestModel和响应数据responseModel var targetModel = new TargetModel { items = requestModel.Items .Join(responseModel.Items, req => req.Index, res => res.Index, (req, res) => new TargetItem { itemCode = req.itemcode, discount = res.discount }) .ToList() };
方案二:循环实现
遍历请求数据,通过字典快速匹配响应中对应Index的记录,适合需要添加额外判断逻辑的场景:
var targetItems = new List<TargetItem>(); // 将响应数据转为字典,提升匹配效率 var responseDict = responseModel.Items.ToDictionary(item => item.Index); foreach (var reqItem in requestModel.Items) { if (responseDict.TryGetValue(reqItem.Index, out var resItem)) { targetItems.Add(new TargetItem { itemCode = reqItem.itemcode, discount = resItem.discount }); } // 可按需添加Index不匹配时的异常处理或日志记录逻辑 } var targetModel = new TargetModel { items = targetItems };
后续数据库操作
拿到targetModel后,即可结合你已有的数据库操作类,遍历targetModel.items,通过itemCode定位对应商品,更新折扣详情。
内容的提问来源于stack exchange,提问作者user20291964
相关产品推荐
相关产品推荐

