Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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# 如何使用LINQ中的密钥对值从单个字段中提取重复数据?_C#_Json_Linq_Dictionary_Json.net - Fatal编程技术网

C# 如何使用LINQ中的密钥对值从单个字段中提取重复数据?

C# 如何使用LINQ中的密钥对值从单个字段中提取重复数据?,c#,json,linq,dictionary,json.net,C#,Json,Linq,Dictionary,Json.net,这是我下面的JSON { "status": "OK", "Response": [{ "id": 43, "Name": "name 1", "SubName": "Sub 1" "Link": "Link 1",

这是我下面的JSON

{
    "status": "OK",
    "Response": [{
        "id": 43,
        "Name": "name 1",
        "SubName": "Sub 1"
        "Link": "Link 1",
        "Active": 1,
        "Genre": 8,
        "Description": "Description 1",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 8
    },
    {
        "id": 44,
        "Name": "name 1",
        "SubName": "Sub 2"
        "Link": "Link 2",
        "Active": 1,
        "Genre": 9,
        "Description": "Description 2",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 9
    },
    {
        "id": 45,
        "Name": "name 1",
        "SubName": "Sub 3"
        "Link": "Link 3",
        "Active": 1,
        "Genre": 10,
        "Description": "Description 3",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 10
    },
    {
        "id": 46,
        "Name": "name 2",
        "SubName": ""
        "Link": "Link 4",
        "Active": 1,
        "Genre": 11,
        "Description": "Description 4",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 11
    },
    {
        "id": 47,
        "Name": "name 3",
        "SubName": "Sub 1"
        "Link": "Link 5",
        "Active": 1,
        "Genre": 12,
        "Description": "Description 5",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 12
    },
    {
        "id": 48,
        "Name": "name 3",
        "SubName": "Sub 2"
        "Link": "Link 6",
        "Active": 1,
        "Genre": 13,
        "Description": "Description 6",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 13
    },
    {
        "id": 49,
        "Name": "name 3",
        "SubName": "Sub 3"
        "Link": "Link 7",
        "Active": 1,
        "Genre": 14,
        "Description": "Description 7",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 14
    },
    {
        "id": 50,
        "Name": "name 3",
        "SubName": "Sub 4"
        "Link": "Link 8",
        "Active": 1,
        "Genre": 15,
        "Description": "Description 8",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 15
    },
    {
        "id": 51,
        "Name": "name 4",
        "SubName": ""
        "Link": "Link 9",
        "Active": 1,
        "Genre": 16,
        "Description": "Description 9",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 16
    }]
}
name 1.json
{
    "rows": [{
        "title": "Sub 1",
        "items": [{
            "id": 43,
            "Name": "name 1",
            "SubName": "Sub 1"
            "Link": "Link 1",
            "Active": 1,
            "Genre": 8,
            "Description": "Description 1",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 8
        }]
    },
    {
        "title": "Sub 2",
        "items": [{
            ""id": 44,
            "Name": "name 1",
            "SubName": "Sub 2"
            "Link": "Link 2",
            "Active": 1,
            "Genre": 9,
            "Description": "Description 2",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 9
        }]
    },
    {
        "title": "Sub 3",
        "items": [{
            ""id": 45,
            "Name": "name 1",
            "SubName": "Sub 3"
            "Link": "Link 3",
            "Active": 1,
            "Genre": 10
            "Description": "Description 3",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 10
        }]
    }
}]
}

name 3.json
{
    "rows": [{
        "title": "Sub 1",
        "items": [{
            "id": 47,
            "Name": "name 3",
            "SubName": "Sub 1"
            "Link": "Link 5",
            "Active": 1,
            "Genre": 12,
            "Description": "Description 5",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 12
        }]
    },
    {
        "title": "Sub 2",
        "items": [{
            ""id": 48,
            "Name": "name 3",
            "SubName": "Sub 2"
            "Link": "Link 6",
            "Active": 1,
            "Genre": 13,
            "Description": "Description 6",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 13
        }]
    },
    {
        "title": "Sub 3",
        "items": [{
            ""id": 49,
            "Name": "name 3",
            "SubName": "Sub 3"
            "Link": "Link 7",
            "Active": 1,
            "Genre": 14
            "Description": "Description 7",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 14
        }]
    },
    {
        "title": "Sub 4",
        "items": [{
            ""id": 50,
            "Name": "name 3",
            "SubName": "Sub 4"
            "Link": "Link 8",
            "Active": 1,
            "Genre": 15
            "Description": "Description 8",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 15
        }]
    }
}]
}
我试着做如下的事情

{
    "status": "OK",
    "Response": [{
        "id": 43,
        "Name": "name 1",
        "SubName": "Sub 1"
        "Link": "Link 1",
        "Active": 1,
        "Genre": 8,
        "Description": "Description 1",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 8
    },
    {
        "id": 44,
        "Name": "name 1",
        "SubName": "Sub 2"
        "Link": "Link 2",
        "Active": 1,
        "Genre": 9,
        "Description": "Description 2",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 9
    },
    {
        "id": 45,
        "Name": "name 1",
        "SubName": "Sub 3"
        "Link": "Link 3",
        "Active": 1,
        "Genre": 10,
        "Description": "Description 3",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 10
    },
    {
        "id": 46,
        "Name": "name 2",
        "SubName": ""
        "Link": "Link 4",
        "Active": 1,
        "Genre": 11,
        "Description": "Description 4",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 11
    },
    {
        "id": 47,
        "Name": "name 3",
        "SubName": "Sub 1"
        "Link": "Link 5",
        "Active": 1,
        "Genre": 12,
        "Description": "Description 5",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 12
    },
    {
        "id": 48,
        "Name": "name 3",
        "SubName": "Sub 2"
        "Link": "Link 6",
        "Active": 1,
        "Genre": 13,
        "Description": "Description 6",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 13
    },
    {
        "id": 49,
        "Name": "name 3",
        "SubName": "Sub 3"
        "Link": "Link 7",
        "Active": 1,
        "Genre": 14,
        "Description": "Description 7",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 14
    },
    {
        "id": 50,
        "Name": "name 3",
        "SubName": "Sub 4"
        "Link": "Link 8",
        "Active": 1,
        "Genre": 15,
        "Description": "Description 8",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 15
    },
    {
        "id": 51,
        "Name": "name 4",
        "SubName": ""
        "Link": "Link 9",
        "Active": 1,
        "Genre": 16,
        "Description": "Description 9",
        "Languages": "",
        "IsDeleted": 0,
        "GenreId": 16
    }]
}
name 1.json
{
    "rows": [{
        "title": "Sub 1",
        "items": [{
            "id": 43,
            "Name": "name 1",
            "SubName": "Sub 1"
            "Link": "Link 1",
            "Active": 1,
            "Genre": 8,
            "Description": "Description 1",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 8
        }]
    },
    {
        "title": "Sub 2",
        "items": [{
            ""id": 44,
            "Name": "name 1",
            "SubName": "Sub 2"
            "Link": "Link 2",
            "Active": 1,
            "Genre": 9,
            "Description": "Description 2",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 9
        }]
    },
    {
        "title": "Sub 3",
        "items": [{
            ""id": 45,
            "Name": "name 1",
            "SubName": "Sub 3"
            "Link": "Link 3",
            "Active": 1,
            "Genre": 10
            "Description": "Description 3",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 10
        }]
    }
}]
}

name 3.json
{
    "rows": [{
        "title": "Sub 1",
        "items": [{
            "id": 47,
            "Name": "name 3",
            "SubName": "Sub 1"
            "Link": "Link 5",
            "Active": 1,
            "Genre": 12,
            "Description": "Description 5",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 12
        }]
    },
    {
        "title": "Sub 2",
        "items": [{
            ""id": 48,
            "Name": "name 3",
            "SubName": "Sub 2"
            "Link": "Link 6",
            "Active": 1,
            "Genre": 13,
            "Description": "Description 6",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 13
        }]
    },
    {
        "title": "Sub 3",
        "items": [{
            ""id": 49,
            "Name": "name 3",
            "SubName": "Sub 3"
            "Link": "Link 7",
            "Active": 1,
            "Genre": 14
            "Description": "Description 7",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 14
        }]
    },
    {
        "title": "Sub 4",
        "items": [{
            ""id": 50,
            "Name": "name 3",
            "SubName": "Sub 4"
            "Link": "Link 8",
            "Active": 1,
            "Genre": 15
            "Description": "Description 8",
            "Languages": "",
            "IsDeleted": 0,
            "GenreId": 15
        }]
    }
}]
}
我正在尝试使用类似上面的重复名称分隔JSON。我在JSON中只找到了重复的名称,没有其他内容

有人知道如何获取重复值吗

我尝试使用Linq查询并使用

mygeneratedresponse.Skip(1).ToList();

它起作用了。但是有更好的解决方案吗?

我不确定这是否是您想要的,但是,请按照一种方法获得重复值,并使用linq对其进行分组

您只需创建一个consoleapp并向其中添加newtonsoft.json,即可运行下面的代码

class Program
    {
        static string pathA = "<place-your-first-json-location-here>"; //ex: c:\test\test.json
        static void Main(string[] args)
        {
            var json = JsonConvert.DeserializeObject<Test>(File.ReadAllText(pathA));

            var filteredByName = json.Response.GroupBy(g => g.Name).OrderBy(o => o.Key).ToList();

            foreach (var item in filteredByName)
            {
                Console.WriteLine($"Name: {item.Key} Qty response: {item.Count()}" );
            }
        }
    }

以下代码将生成您的预期输出: 此代码也放在.NETFIDLE上

使用系统;
使用System.Collections.Generic;
使用Newtonsoft.Json;
使用System.Linq;
公共课程
{
公共静态void Main()
{
var jsonString=“{\'status\”:“OK\”,“Response\”:[{\'id\”:43,“Name\”:“Name 1\”,“SubName\”:“Sub 1\”,“Link\”:“Link 1\”,“Active\”:1,\“Genre\”:8,\“Description\”:“Description 1\”,“Languages\”:“Languages\”:“IsDeleted\”:0,\“GenreId\”:8},{\'id\':44、\'Name\':\'Name 1\'、\'SubName\':\'sub2\'、\'Link\':\'Link 2\'、\'Active\':1、\'Genre\':9、\'Description\':\'Description 2\'、\'Languages\':\'IsDeleted\':0、\'GenreId\':9}、{\'id\'45、\'Name\':'Name\'Name\'、'SubName\'\“:\“Sub 3\”,“Link\”:“Link 3\”,“Active\”:1,\“Genre\”:10,\“Description\”:“Description 3\”,“Languages\”:“Description 3\”,\“Languages\”:“IsDeleted\”:0,\“GenreId\”:10},{\“id\”:46,\“Name\:“Name 2\”,“SubName\”:“SubName\”,“Link\”:“Link\”,“Link\”:“Link 4\”,“Active\”:1,“流派”:11,“描述”:描述4“,“语言”:“,”IsDeleted\”:0,“流派”:11},{“id”:47,“名称”:描述3“,”子名称“:”子1“,”链接“:”链接5“,”活动“:1“,”流派“:12“,”描述“:”描述5”“,”语言“:\”,”被删除“,”链接“:”链接6“,”活动“:1,,”流派“:13,,”描述“:”描述6“,”语言“:”被删除“,”描述6“,”语言“,”被删除“:0\“GenreId\”:13},{“id\”:49,\“Name\”:“Name 3\”,“SubName\”:“Sub 3\”,“Link\”:“Link 7\”,“Active\”:1,\“Genre\”:14,\“Description\”:“Description 7\”,“Languages\”:“,“IsDeleted\”:0,\“GenreId\”:14,\“id\”:50,\“Name\:”名称3“,”子名称“:”子4“,”链接“:”链接8“,”活动“:1,,”流派“:15,,”描述“:”描述8“,”语言“:”,”IsDeleted“:0,,”GenreId“:15},{”id“:51,,”名称“:”名称4“,”子名称“:”链接9\“,”活动“:1,\”流派“:16,\”描述“:\”描述9“,\”语言“:\”,\”IsDeleted\”:0,\”GenreId\“:16}]}”;
var json=JsonConvert.DeserializeObject(jsonString);
var filteredByName=json.Response.GroupBy(g=>g.Name).OrderBy(o=>o.Key).ToList();
foreach(filteredByName中的变量项)
{
var fileObject=item.GroupBy(x=>x.SubName)。选择(s=>new{title=s.Key,items=s.ToList());
var fileJson=JsonConvert.SerializeObject(fileObject,Formatting.Indented);
Console.WriteLine(“+item.Key+”.json”);
Console.WriteLine(fileJson);
}
}
}
公共类JsonResponse{
公共int id{get;set;}
公共字符串名称{get;set;}
公共字符串子名称{get;set;}
公共字符串链接{get;set;}
公共int活动{get;set;}
公共int类型{get;set;}
公共字符串说明{get;set;}
公共字符串语言{get;set;}
公共int被删除{get;set;}
public int GenreId{get;set;}
}
公共类根{
公共字符串状态{get;set;}
公共列表响应{get;set;}
}
我试过使用Linq QUARY并应用skip(1)。它是有效的。但是,它不是更好的解决方案。-然后请您的问题说明您尝试了什么,并解释为什么“它不是更好的解决方案”“.From:帮助他人重现问题…如果您的问题与您编写的代码有关,您应该包含一些。包含足够的代码以允许他人重现问题。您有类似的问题,因此如果您能够以最小的方式重现您的问题,我们就更有可能提供帮助。”。
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        var  jsonString = "{    \"status\": \"OK\",    \"Response\": [{        \"id\": 43,        \"Name\": \"name 1\",        \"SubName\": \"Sub 1\",        \"Link\": \"Link 1\",        \"Active\": 1,        \"Genre\": 8,        \"Description\": \"Description 1\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 8    },    {        \"id\": 44,        \"Name\": \"name 1\",        \"SubName\": \"Sub 2\",        \"Link\": \"Link 2\",        \"Active\": 1,        \"Genre\": 9,        \"Description\": \"Description 2\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 9    },    {        \"id\": 45,        \"Name\": \"name 1\",        \"SubName\": \"Sub 3\",        \"Link\": \"Link 3\",        \"Active\": 1,        \"Genre\": 10,        \"Description\": \"Description 3\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 10    },    {        \"id\": 46,        \"Name\": \"name 2\",        \"SubName\": \"\",        \"Link\": \"Link 4\",        \"Active\": 1,        \"Genre\": 11,        \"Description\": \"Description 4\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 11    },    {        \"id\": 47,        \"Name\": \"name 3\",        \"SubName\": \"Sub 1\",        \"Link\": \"Link 5\",        \"Active\": 1,        \"Genre\": 12,        \"Description\": \"Description 5\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 12    },    {        \"id\": 48,        \"Name\": \"name 3\",        \"SubName\": \"Sub 2\",        \"Link\": \"Link 6\",        \"Active\": 1,        \"Genre\": 13,        \"Description\": \"Description 6\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 13    },    {        \"id\": 49,        \"Name\": \"name 3\",        \"SubName\": \"Sub 3\",        \"Link\": \"Link 7\",        \"Active\": 1,        \"Genre\": 14,        \"Description\": \"Description 7\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 14    },    {        \"id\": 50,        \"Name\": \"name 3\",        \"SubName\": \"Sub 4\",        \"Link\": \"Link 8\",        \"Active\": 1,        \"Genre\": 15,        \"Description\": \"Description 8\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 15    },    {        \"id\": 51,        \"Name\": \"name 4\",        \"SubName\": \"\",        \"Link\": \"Link 9\",        \"Active\": 1,        \"Genre\": 16,        \"Description\": \"Description 9\",        \"Languages\": \"\",        \"IsDeleted\": 0,        \"GenreId\": 16    }]}";
        
         var json = JsonConvert.DeserializeObject<Root>(jsonString);
        
          var filteredByName = json.Response.GroupBy(g => g.Name).OrderBy(o => o.Key).ToList();

            foreach (var item in filteredByName)
            {
                var fileObject =  item.GroupBy(x=>x.SubName).Select(s=> new { title =s.Key, items= s.ToList()});
               var fileJson =   JsonConvert.SerializeObject(fileObject, Formatting.Indented);
                Console.WriteLine(""  + item.Key +".json");
                Console.WriteLine(fileJson);
                
            }

        
        
    }
}

 public class JsonResponse    {
        public int id { get; set; } 
        public string Name { get; set; } 
        public string SubName { get; set; } 
        public string Link { get; set; } 
        public int Active { get; set; } 
        public int Genre { get; set; } 
        public string Description { get; set; } 
        public string Languages { get; set; } 
        public int IsDeleted { get; set; } 
        public int GenreId { get; set; } 
    }

    public class Root    {
        public string status { get; set; } 
        public List<JsonResponse> Response { get; set; } 
    }