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

前端技术 2023/09/01 .NET

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\"}]

代码如下:

复制代码 代码如下:

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

本文地址:https://www.stayed.cn/item/1521

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。