代码之家  ›  专栏  ›  技术社区  ›  pepr

如何从哈希表中动态创建对象[][]?

  •  0
  • pepr  · 技术社区  · 6 年前

    public System.Data.DataSet GetXxxx(string functionName, object[][] parameters)
    

    一些 functionName s不使用参数,有些使用一个,有些使用更多,例如(从他们的文档):

    parameters[0][0]: @key_one
    parameters[0][1]: value for @key_one
    parameters[1][0]: @key_two
    parameters[1][1]: value for @key_two
    

    Hashtable Dictionary<string, object> parameters[][] 在包装器内部动态地。

    我该怎么做?

    实际上,参数对必须 . 我必须将界面更改为:

    using ListOfParamPairs = List<KeyValuePair<string, object>>;
    
    ...
    
    public static DataSet GetXxxx(string functionName, ListOfParamPairs parameters)
    {
        ...
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Dmitry Bychenko    6 年前

    如果我没听错,你可以试试 :

    object[][] Dictinary<string, object>

     using System.Linq;
    
     ...
    
     Dictionary<string, object> dictionary = parameters
     //.Where(line => line.Length == 2 && line[0] != null) // valid params only
       .ToDictionary(line => line[0].ToString(), 
                     line => line[1]);
    

    回到 对象[][] :

     using System.Linq;
    
     ...
    
     object[][] parameters = dictionary
       .Select(pair => new object[] {pair.Key, pair.Value})
       .ToArray();
    

    编辑: 以防我们不得不改用 List<KeyValuePair<String, Object>> (我们想 保留初始顺序 ; 字典中的对不整齐):

    收件人:

     List<<KeyValuePair<String, Object>> list = parameters
       //.Where(line => line.Length == 2 && line[0] != null) // valid params only  
       .Select(line => new KeyValuePair(line[0].ToString(), line[1]))
       .ToList();
    

    背面: (技术上相同)

      object[][] parameters = list
        .Select(pair => new object[] {pair.Key, pair.Value})
        .ToArray();