使用连接创建动态数据透视表列表

时间:2018-03-02 20:14:40

标签: c# .net linq lambda

我想在列表上创建动态透视列表,其中包含以下格式的数据

"products" : 
    {
        "name": "ABC",       
        "Variance": [
                    {
                        "Date": "01-01-2018",                
                        "Value": "10"
                    },
                    {
                        "Date": "02-01-2018",                
                        "Value": "11"
                    },
                    {
                        "Date": "03-01-2018",                
                        "Value": "12"
                    },
            ]
    },
    {
        "name": "XYZ",       
        "Variance": [
                    {
                        "Date": "01-01-2018",                
                        "Value": "22"
                    },
                    {
                        "Date": "03-01-2018",                
                        "Value": "24"
                    },
                    {
                        "Date": "04-01-2018",                
                        "Value": "28"
                    },
            ],


    },
    {
        "name": "PQR",       
        "Variance": [
                    {
                        "Date": "01-01-2018",                
                        "Value": "20"
                    },
                    {
                        "Date": "02-01-2018",                
                        "Value": "22"
                    },
                    {
                        "Date": "04-01-2018",                
                        "Value": "24"
                    },
            ],
    }

我想创建透视列表,以便它可以返回像

这样的数据
"NewProducts":[{
        "Date": "01-01-2018", 
        "ABC" : "10"
        "XYZ" : "22",
        "PQR" : "20"
    },
    {
        "Date": "02-01-2018", 
        "ABC" : "11"
        "XYZ" : "null",
        "PQR" : "22"
    },
    {
        "Date": "03-01-2018", 
        "ABC" : "12"
        "XYZ" : "24",
        "PQR" : "null"
    },
    {
        "Date": "04-01-2018", 
        "ABC" : "null"
        "XYZ" : "28",
        "PQR" : "24"
    }]

我尝试了一些在内部列表上加入的方法,但没有获得所需的结果。我想避免循环,因为我的产品列表会根据选择而有所不同。 我能够使用for循环加入列表,但我希望尽可能少地使用for循环。任何建议对我都很有帮助。

先谢谢。

1 个答案:

答案 0 :(得分:0)

假设您要使用Dictionary<string,int>来保存动态值对,可以先使用SelectMany将嵌套结构展平为新的平面列表,然后按{{1}分组,然后使用LINQ }:

Date