如何在 C# 中连接和执行 JSON 数据之间的操作?

How to join and perform an operation between JSON data in C#?

我正在处理 linq-to-entities,查询 2 个不同的实体。一个 returns data 和另一个 returns addValues,我也参考了 NewtonSoft.JsonSystem.Data.Objetsvar query1 returns datavar 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 排序的=]

假设 dataaddValues 中的每个元素都具有 keyvalue 字段,以下代码段将起作用。

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