c#中的字典重复键

时间:2016-10-25 15:54:35

标签: c# wcf dictionary

我正在开发WCF服务。在这个服务中,我需要返回一个包含每个索引的数组。但我碰巧有一个案例(在这种情况下可以很多),其中1个索引可能有一个或多个数据。我解释

我有一个班级指标

public class Indicador
{
    [DataMember]
    public string indicador_nombre { get; set; }
    [DataMember]
    public string indicador_codigo { get; set; }
    [DataMember]
    public string indicador_tipo { get; set; }
    [DataMember]
    public string indicador_descripcion { get; set; }
    [DataMember]
    public Dictionary<string, List<Celda>> celdas { get; set; }
}

此指标包含一个字典,其中包含stringCeldas列表。

public class Celda
{
    [DataMember]
    public int celda_id { get; set; }
    [DataMember]
    public string celda_codigo_empresa { get; set; }
    [DataMember]
    public string celda_modulo_codigo { get; set; }
    [DataMember]
    public int celda_orden { get; set; }
    [DataMember]
    public string celda_categoria_nombre { get; set; }
    [DataMember]
    public string celda_categoria_codigo { get; set; }
    [DataMember]
    public List<CeldaKeyVal> valores_celdas { get; set; }
}

Celda还有一个CeldaKeyVal

列表
public class CeldaKeyVal
{
    [DataMember]
    public string celda_key_codigo { get; set; }
    [DataMember]
    public string celda_key_valor { get; set; }
}

现在,例如我有以下内容:

{
  "GetCheckInResult": {
    "indicadores": [
      {
        "celdas": [
          {
            "Key": "I001",
            "Value": [
              {
                "celda_categoria_codigo": "C01",
                "celda_categoria_nombre": "Cecina",
                "celda_codigo_empresa": "E0001",
                "celda_id": 1,
                "celda_modulo_codigo": "M01",
                "celda_orden": 1,
                "valores_celdas": [
                  {
                    "celda_key_codigo": "CODIGO",
                    "celda_key_valor": "CHECK1"
                  },
                  {
                    "celda_key_codigo": "IMAGEN",
                    "celda_key_valor": "L76nD.jpg"
                  },
                  {
                    "celda_key_codigo": "SUBTEXTO",
                    "celda_key_valor": "prueba subtexto 1"
                  },
                  {
                    "celda_key_codigo": "TEXTO",
                    "celda_key_valor": "Prueba dominio 1"
                  }
                ]
              }
            ]
          }
        ],
        "indicador_codigo": "I001",
        "indicador_descripcion": "Foto SKU + Descrip.SKU + EAN13 + Sí/No",
        "indicador_nombre": "Presencia",
        "indicador_tipo": "T01"
      },
      {
        "celdas": [
          {
            "Key": "I002",
            "Value": [
              {
                "celda_categoria_codigo": "C02",
                "celda_categoria_nombre": "Cerdo",
                "celda_codigo_empresa": "E0001",
                "celda_id": 4,
                "celda_modulo_codigo": "M01",
                "celda_orden": 1,
                "valores_celdas": [
                  {
                    "celda_key_codigo": "CODIGO",
                    "celda_key_valor": "codigo"
                  }
                ]
              }
            ]
          }
        ],
        "indicador_codigo": "I002",
        "indicador_descripcion": "Descrip. + Cantidad",
        "indicador_nombre": "Precio",
        "indicador_tipo": "T03"
      },
      {
        "celdas": [
          {
            "Key": "I002",
            "Value": [
              {
                "celda_categoria_codigo": "C01",
                "celda_categoria_nombre": "Cecina",
                "celda_codigo_empresa": "E0001",
                "celda_id": 5,
                "celda_modulo_codigo": "M01",
                "celda_orden": 4,
                "valores_celdas": [
                  {
                    "celda_key_codigo": "CODIGO",
                    "celda_key_valor": "ssddsds"
                  }
                ]
              }
            ]
          }
        ],
        "indicador_codigo": "I002",
        "indicador_descripcion": "Descrip. + Cantidad",
        "indicador_nombre": "Precio",
        "indicador_tipo": "T03"
      },
      {
        "celdas": [
          {
            "Key": "I003",
            "Value": [
              {
                "celda_categoria_codigo": "C01",
                "celda_categoria_nombre": "Cecina",
                "celda_codigo_empresa": "E0001",
                "celda_id": 3,
                "celda_modulo_codigo": "M01",
                "celda_orden": 6,
                "valores_celdas": [
                  {
                    "celda_key_codigo": "CODIGO",
                    "celda_key_valor": "sdadsa"
                  },
                  {
                    "celda_key_codigo": "IMAGEN",
                    "celda_key_valor": "L76nD.jpg"
                  },
                  {
                    "celda_key_codigo": "TEXTO",
                    "celda_key_valor": "Texto 1"
                  }
                ]
              }
            ]
          }
        ],
        "indicador_codigo": "I003",
        "indicador_descripcion": "Foto + Sí/No",
        "indicador_nombre": "Actividades Claves",
        "indicador_tipo": "T02"
      }
    ],
    "status": 1
  }
}

如果我必须实现key I002,两个Celdas ...那么我希望两个Celdas在同一个key而不是分开。

首先,我在为SP的查询结果的每次迭代初始化字典。但失败并显示出这样的安排来停止。如果我在我的外面初始化,即一次,产生多个结果,如果它是错误的。尽量做到尽可能具体,任何问题都不要犹豫评论!

1 个答案:

答案 0 :(得分:0)

经过多次搜索,我发现错误完全在我的代码中!真是遗憾......如果有人为你服务,我会留下代码解决方案!

0 index and value is 1
1 index and value is 3
2 index and value is 2
3 index and value is 6
4 index and value is 4
5 index and value is 2
6 index and value is 2
7 index and value is 2
8 index and value is 2
9 index and value is 2
10 index and value is 1
11 index and value is 2
12 index and value is 2
13 index and value is 2
14 index and value is 8
15 index and value is 1