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"}]
代码如下:
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() 方法中用到的自定义比较类:
/// <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 ;
int hashName = obj["name"] == null ? : obj["name"].GetHashCode();
int hashCode = obj["name"] == null ? : obj["name"].GetHashCode();
return hashName ^ hashCode;
}
}
Queryable.Union 方法实现json格式的字符串合并的更多相关文章
- 在PHP代码中处理JSON 格式的字符串的两种方法:
		总结: 在PHP代码中处理JSON 格式的字符串的两种方法: 方法一: $json= '[{"id":"1","name":"\u ... 
- JSon_零基础_006_将JSon格式的字符串转换为Java对象
		需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ... 
- JavaScript中,JSON格式的字符串与JSON格式的对象相互转化
		前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法 ... 
- 获取JSON格式的字符串各个属性对应的值
		{"lastrdtime":1515998187379,"creditbalance":"$5.00","contactmode& ... 
- Java Json格式的字符串转变对象
		Java Json格式的字符串转变对象: 方法还是比较多的: 学习:https://my.oschina.net/heweipo/blog/386808 其中的jsonlib说明:http://www ... 
- 如何解析json格式的字符串
		package com.json; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impor ... 
- json格式的字符串转为json对象遇到特殊字符问题解决
		中午做后台发过来的json的时候转为对象,可是有几条数据一直出不来,检查发现json里包含了换行符,造成这种情况的原因可能是编辑部门在编辑的时候打的回车造成的 假设有这样一段json格式的字符串 va ... 
- 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化                                                       分类:            JSON             2015-01-28 14:26    72人阅读    评论(0)    收藏
		可以解决如下json格式的字符串不能使用DataContractJsonSerializer反序列化 { "ss": "sss", " ... 
- android实现json数据的解析和把数据转换成json格式的字符串
		利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般 ... 
随机推荐
- hdu3336
			Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ... 
- 何为 ISAPI
			ISAPI即为Internet Server Application Programming Interface ISAPI 服务器扩展 ISAPI 服务器扩展是可以被 HTTP 服务器加载和调用的 ... 
- HTML页面背景音乐控制
			//兼容ie,chrome,safari. <object id="AudioID" type="application/x-mplayer2" data ... 
- 22----2013.06.29---HTML--html介绍.超链接和图片,表格,表单,表单标签,meta,复习当天内容
			01 HTML HTML :Hypertext Markup Language 超文本标记语言(类似于 裸奔的人.) 作用:向用户展示信息. CSS: Cascading 层叠样式表(类似于 人的 ... 
- byte[] 清空
			1. using(byte buff = new byte[Size]){ // 你要用的代码,} 2. Array.Clear(bytes, 0 ,bytes.Length); 
- 全选按钮的设定和POST处理当前循环的列表
			以下为全选按钮的代码,通过class实现. //全选按钮 $(function () { $("#selectall").change(function () { var isch ... 
- php折线图 布局图
			例子1: 1 <?php require_once("../conf.php"); ?> <!DOCTYPE HTML> <html> < ... 
- php面向对象的基础:创建OOP的类和字段
			类的创建 class Computer{ //类的字段(成员) //类的方法 } 对象的声明 $computer = new Computer(); new标识符是为了在内存中创建一个对象(实例),而 ... 
- Nginx集群(转)
			转自:http://hi.baidu.com/xingyuanju/blog/item/779a2a23b7ebb749935807f1.html http://hi.baidu.com/dianhu ... 
- (转)Yale CAS + .net Client 实现 SSO(6)
			第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 第三部分:实现 ASP.NET WebForm Client 第四部分:实现基于数据库的身份验证 第五部分:扩展基于数据库的身份验证 第六 ... 
