如何在 C# 中连接和执行 JSON 数据之间的操作?
How to join and perform an operation between JSON data in C#?
我正在处理 linq-to-entities,查询 2 个不同的实体。一个 returns data
和另一个 returns addValues
,我也参考了 NewtonSoft.Json
和 System.Data.Objets
:
var query1
returns data
和 var query2
returns addValues
。调试我可以看到:
data = [{"key":"tf","value":221},{"key":"ba","value":108}];
addValues = [{"key":"tf","value":2},{"key":"ba","value":1.5}];
如何通过 "key" 获取新的 string/object 连接并在 data[=35 的值之间执行操作=] 和 addValues?
查询结果应该是calculatedResult
.
result = [{"key":"tf","value":221+2},{"key":"ba","value":108+1.5}];
calculatedResult = [{"key":"tf","value":223},{"key":"ba","value":109.5}];
重要说明: 我可以确定两个数组的项目数相同,但不是按 [=22 排序的=]
假设 data
和 addValues
中的每个元素都具有 key
和 value
字段,以下代码段将起作用。
public class Foo
{
public string key;
public float value;
}
class Program
{
static void Main(string[] args)
{
var data = "[{\"key\":\"tf\",\"value\":221},{\"key\":\"ba\",\"value\":108}]";
var addValue = "[{\"key\":\"tf\",\"value\":2},{\"key\":\"ba\",\"value\":1.5}]";
var obj1 = JsonConvert.DeserializeObject<List<Foo>>(data);
var obj2 = JsonConvert.DeserializeObject<List<Foo>>(addValue);
var new_obj = (from a in obj1
from b in obj2
where a.key == b.key
select new Foo { key = a.key, value = a.value + b.value }).ToList();
Console.WriteLine(JsonConvert.SerializeObject(new_obj, Formatting.Indented));
}
}
输出:
[
{
"key": "tf",
"value": 223.0
},
{
"key": "ba",
"value": 109.5
}
]
我正在处理 linq-to-entities,查询 2 个不同的实体。一个 returns data
和另一个 returns addValues
,我也参考了 NewtonSoft.Json
和 System.Data.Objets
:
var query1
returns data
和 var query2
returns addValues
。调试我可以看到:
data = [{"key":"tf","value":221},{"key":"ba","value":108}];
addValues = [{"key":"tf","value":2},{"key":"ba","value":1.5}];
如何通过 "key" 获取新的 string/object 连接并在 data[=35 的值之间执行操作=] 和 addValues?
查询结果应该是calculatedResult
.
result = [{"key":"tf","value":221+2},{"key":"ba","value":108+1.5}];
calculatedResult = [{"key":"tf","value":223},{"key":"ba","value":109.5}];
重要说明: 我可以确定两个数组的项目数相同,但不是按 [=22 排序的=]
假设 data
和 addValues
中的每个元素都具有 key
和 value
字段,以下代码段将起作用。
public class Foo
{
public string key;
public float value;
}
class Program
{
static void Main(string[] args)
{
var data = "[{\"key\":\"tf\",\"value\":221},{\"key\":\"ba\",\"value\":108}]";
var addValue = "[{\"key\":\"tf\",\"value\":2},{\"key\":\"ba\",\"value\":1.5}]";
var obj1 = JsonConvert.DeserializeObject<List<Foo>>(data);
var obj2 = JsonConvert.DeserializeObject<List<Foo>>(addValue);
var new_obj = (from a in obj1
from b in obj2
where a.key == b.key
select new Foo { key = a.key, value = a.value + b.value }).ToList();
Console.WriteLine(JsonConvert.SerializeObject(new_obj, Formatting.Indented));
}
}
输出:
[
{
"key": "tf",
"value": 223.0
},
{
"key": "ba",
"value": 109.5
}
]