源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Queryable.Union 方法实现json格式的字符串合并的具体实例

  • 时间:2022-05-11 08:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Queryable.Union 方法实现json格式的字符串合并的具体实例
1.在数据库中以json字符串格式保存,如:[{"name":"张三","time":"8.592","area":"27.27033","conc":"4.12136"},{"name":"李四","time":"9.100","area":"56.21229","conc":"4.57692"}] 2.添加新内容后合并不相同的数据。如果name相同,以最新的数据替换原来的数据。 如:数据库中原保存的数据是[{"name":"张三","time":"8.592","area":"27.27033","conc":"4.12136"},{"name":"李四","time":"9.100","area":"56.21229","conc":"4.57692"}] 新加的数据为[{"name":"张三","time":"12","area":"27.70533","conc":"4.12136"},{"name":"王五","time":"4","area":"77","conc":"8.788"}]  则替换后的数据为[{"name":"张三","time":"12","area":"27.70533","conc":"4.12136"},{"name":"王五","time":"4","area":"77","conc":"8.788"},{"name":"李四","time":"9.100","area":"56.21229","conc":"4.57692"}] 代码如下:
[u]复制代码[/u] 代码如下:
public void InsertOrUpdateOnlyItem(List<tblLims_Ana_LE_Import_Common> listLe)         {             var listLeInsert = new List<tblLims_Ana_LE_Import_Common>();             var listLeUpdate = new List<tblLims_Ana_LE_Import_Common>();             foreach (var le in listLe)             {                 tblLims_Ana_LE_Import_Common model = le;                 var own = CurrentRepository.Find(a => a.fldTaskID == model.fldTaskID                 && a.fldBizCatID == model.fldBizCatID                 && a.fldItemCode == model.fldItemCode                 && a.fldNumber == model.fldNumber                 && a.fldSampleCode == model.fldSampleCode);                 if (own != null)                 {                     var ser = new JavaScriptSerializer();                     var listown = ser.Deserialize<List<Dictionary<string, string>>>(own.fldImportData);  //原数据                     var listmodel = ser.Deserialize<List<Dictionary<string, string>>>(model.fldImportData); //新数据                     IEqualityComparer<Dictionary<string, string>> ec = new EntityComparer();   //自定义的比较类                     own.fldImportData = ser.Serialize(listmodel.Union(listown, ec));  //合并数据                     listLeUpdate.Add(own);                 }                 else                 {                     listLeInsert.Add(model);                 }             }             CurrentRepository.UpdateAll(listLeUpdate);             CurrentRepository.InsertAll(listLeInsert);             CurrentRepository.Save();         }
tblLims_Ana_LE_Import_Common 为数据库中存数据的表 Union() 方法中用到的自定义比较类:
[u]复制代码[/u] 代码如下:
/// <summary>     /// 自定义比较类     /// </summary>     public class EntityComparer : IEqualityComparer<Dictionary<string, string>>     {         public bool Equals(Dictionary<string, string> x, Dictionary<string, string> y)         {             if (ReferenceEquals(x, y)) return true;             if (ReferenceEquals(x, null) || ReferenceEquals(y, null))                 return false;             return x["name"] == y["name"];  //如果名称相同就不追加         }         public int GetHashCode(Dictionary<string, string> obj)         {             if (ReferenceEquals(obj, null)) return 0;             int hashName = obj["name"] == null ? 0 : obj["name"].GetHashCode();             int hashCode = obj["name"] == null ? 0 : obj["name"].GetHashCode();             return hashName ^ hashCode;         }     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部