C# 在C Aspnet WebApi结果对象上添加自定义键

C# 在C Aspnet WebApi结果对象上添加自定义键,c#,asp.net,json,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Json,Asp.net Web Api,Asp.net Web Api2,我必须创建Asp.NETWebAPI 我有一个结构化对象 [Serializable()] public partial class OrderList { [Key] public string ClienteId; public List<Ordine> Ordini; } public class Ordine { [Key] public string CodOrd; public string Stato; publ

我必须创建Asp.NETWebAPI

我有一个结构化对象

[Serializable()]
public partial class OrderList
{
    [Key]
    public string ClienteId;
    public List<Ordine> Ordini;
}

public class Ordine
{
    [Key]
    public string CodOrd;
    public string Stato;
    public string Pagamento;
    public List<Riga> Righe;
}

public class Riga
{
    public string Articolo;
    public string Quantita;
    public string Listino;
}
但我的结果是:

    {
    "1297": {
        "ClienteId": "1297",
        "Ordini": {
            "OC_1/2985": {
                "CodOrd": "OC_1/2985",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "B892VR",
                        "Quantita": "12",
                        "Listino": "2,5"
                    },
                    {
                        "Articolo": "B895VR",
                        "Quantita": "12",
                        "Listino": "3,2"
                    }
                ]
            }
        }
    },
    "3458": {
        "ClienteId": "3458",
        "Ordini": {
            "OW_285": {
                "CodOrd": "OW_285",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "5114-21",
                        "Quantita": "6",
                        "Listino": "2,8"
                    },
                    {
                        "Articolo": "T1057",
                        "Quantita": "6",
                        "Listino": "12,8"
                    }
                ]
            }
        }
    }
}

如何在结构上添加对象键?

使用字典而不是列表。注意:您有一个查询来选择客户端,然后为每个客户端添加一个额外的查询。这被称为n+1问题,在许多客户的情况下无法很好地扩展。Thx Wiktor,但我必须列出有订单和没有订单的客户。Thx Grundy,你的意思是我必须像这样使用字典?[Serializable]公共部分类OrderList{[Key]公共字典客户端;}
[
    {
        "ClienteId": "3458",
        "Ordini": [
            {
                "CodOrd": "OW_285",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "5114-21",
                        "Quantita": "6",
                        "Listino": "2,8"
                    },
                    {
                        "Articolo": "T1057",
                        "Quantita": "6",
                        "Listino": "12,8"
                    }
                ]
            }
        ]
    },
    {
        "ClienteId": "1297",
        "Ordini": [
            {
                "CodOrd": "OC_1/2985",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "B892VR",
                        "Quantita": "12",
                        "Listino": "2,5"
                    },
                    {
                        "Articolo": "B895VR",
                        "Quantita": "12",
                        "Listino": "3,2"
                    }
                ]
            }
        ]
    }
]
    {
    "1297": {
        "ClienteId": "1297",
        "Ordini": {
            "OC_1/2985": {
                "CodOrd": "OC_1/2985",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "B892VR",
                        "Quantita": "12",
                        "Listino": "2,5"
                    },
                    {
                        "Articolo": "B895VR",
                        "Quantita": "12",
                        "Listino": "3,2"
                    }
                ]
            }
        }
    },
    "3458": {
        "ClienteId": "3458",
        "Ordini": {
            "OW_285": {
                "CodOrd": "OW_285",
                "Stato": "EVASO",
                "Pagamento": "CONTRASSEGNO AL CORRIERE",
                "Righe": [
                    {
                        "Articolo": "5114-21",
                        "Quantita": "6",
                        "Listino": "2,8"
                    },
                    {
                        "Articolo": "T1057",
                        "Quantita": "6",
                        "Listino": "12,8"
                    }
                ]
            }
        }
    }
}