Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 合并具有相同属性c值的json对象#_C#_Arrays_Json_Linq_.net Core - Fatal编程技术网

C# 合并具有相同属性c值的json对象#

C# 合并具有相同属性c值的json对象#,c#,arrays,json,linq,.net-core,C#,Arrays,Json,Linq,.net Core,如何在具有相同键和值的相同响应中组合JSON对象。比如,如果我有两个具有相同语言的对象:Python,我想将它们组合起来,并列出该语言下的剩余数据,Python,我不想重复 [ [ { "language": "Python", "id": 319029846, "full_Name": "beurtschipper/Depix", &q

如何在具有相同键和值的相同响应中组合JSON对象。比如,如果我有两个具有相同语言的对象:Python,我想将它们组合起来,并列出该语言下的剩余数据,Python,我不想重复

[
  [
    {
      "language": "Python",
      "id": 319029846,
      "full_Name": "beurtschipper/Depix",
      "name": "Depix"
    },
    {
      "language": "Python",
      "id": 319169382,
      "full_Name": "benwilber/boltstream",
      "name": "boltstream"
    },
    {
      "language": "Python",
      "id": 316899719,
      "full_Name": "r0ysue/r0capture",
      "name": "r0capture"
    }
  ],
  [
    {
      "language": "YARA",
      "id": 318029147,
      "full_Name": "fireeye/red_team_tool_countermeasures",
      "name": "red_team_tool_countermeasures"
    }
  ],
  [
    {
      "language": "TypeScript",
      "id": 313443335,
      "full_Name": "pmndrs/valtio",
      "name": "valtio"
    }
  ]
]
我要的表格是

[
  [
    {
      "language": "Python",
      "id": [319029846, 319169382, 316899719],
      "full_Name": ["beurtschipper/Depix", "benwilber/boltstream", "r0ysue/r0capture"],
      "name": ["Depix", "boltstream", "r0capture"]
    }
  ],
  [
    {
      "language": "YARA",
      "id": 318029147,
      "full_Name": "fireeye/red_team_tool_countermeasures",
      "name": "red_team_tool_countermeasures"
    }
  ],
  [
    {
      "language": "TypeScript",
      "id": 313443335,
      "full_Name": "pmndrs/valtio",
      "name": "valtio"
    }
  ]
]
这就是我正在使用的代码

    public class Items
    {
        [JsonPropertyName("language")]
        public string Language { get; set; }
        [JsonPropertyName("id")]
        public int Id { get; set; }

        [JsonPropertyName("name")]
        public  string Name { get; set; }

        [JsonPropertyName("full_name")]
        public string Full_Name { get; set; }
        public string total_count { get; set; }
    }

    public class Root
    {
        [JsonPropertyName("items")]
        public List<Items> Items { get; set; }
    }


        Root jObj2 = JsonConvert.DeserializeObject<Root>(readerResult);
        var result = jObj2.Items.Select(x => new
        {
            x.Language,
            x.Id,
            x.Full_Name,
            x.Name
        }).GroupBy(x => x.Language).ToArray();
        return new JsonResult(result);
公共类项目
{
[JsonPropertyName(“语言”)]
公共字符串语言{get;set;}
[JsonPropertyName(“id”)]
公共int Id{get;set;}
[JsonPropertyName(“名称”)]
公共字符串名称{get;set;}
[JsonPropertyName(“全名”)]
公共字符串全名{get;set;}
公共字符串总计数{get;set;}
}
公共类根
{
[JsonPropertyName(“项目”)]
公共列表项{get;set;}
}
根作业J2=JsonConvert.DeserializeObject(readerResult);
var result=jObj2.Items.Select(x=>new
{
x、 语言,
x、 身份证,
x、 全名,
x、 名字
}).GroupBy(x=>x.Language).ToArray();
返回新的JsonResult(result);

GroupBy
是一个很好的起点。拥有组后,需要在新列表中选择每个组的各个属性:

var result = jObj2.Items
    .GroupBy(x => x.Language)
    .Select(group => new
    {
        Language = group.Key,
        Ids = group.Select(x => x.Id).ToList(),
        FullNames = group.Select(x => x.Full_Name).ToList(),
        Names = group.Select(x => x.Name).ToList()
    })
    .ToArray();

哦,先生,除非我尝试将这些Id、名称……等放入列表
ids=group.Select(x=>x.Id).ToList(),
,否则我感到很惭愧,因为这很简单,但我遇到了一个问题,那就是它们不是一个列表,我甚至不知道我应该在Select之前输入GroupBy,现在我知道GroupBy实际上是如何工作的。如果你不介意的话,我想问另一个问题。。要知道的是经验还是我学得不好?当然,非常感谢您的帮助。您使用Linq的频率越高,您就越容易找到此类任务