Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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# 如何从哈希表动态创建对象[][]?_C#_Arrays_Dictionary - Fatal编程技术网

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

C# 如何从哈希表动态创建对象[][]?,c#,arrays,dictionary,C#,Arrays,Dictionary,我正在编写一个由第三方编写的web服务包装器。界面如下所示: public System.Data.DataSet GetXxxx(string functionName, object[][] parameters) 有些functionNames不使用参数,有些使用一个参数,有些使用更多参数,就像这样(从他们的文档中): 为了推广包装器,我考虑传递哈希表或字典,并在包装器内动态创建参数[][] 我该怎么做 更新:实际上,参数对必须保持顺序。如果需要,我必须将界面更改为: using Lis

我正在编写一个由第三方编写的web服务包装器。界面如下所示:

public System.Data.DataSet GetXxxx(string functionName, object[][] parameters)
有些
functionName
s不使用参数,有些使用一个参数,有些使用更多参数,就像这样(从他们的文档中):

为了推广包装器,我考虑传递
哈希表
字典
,并在包装器内动态创建
参数[][]

我该怎么做

更新:实际上,参数对必须保持顺序。如果需要,我必须将界面更改为:

using ListOfParamPairs = List<KeyValuePair<string, object>>;

...

public static DataSet GetXxxx(string functionName, ListOfParamPairs parameters)
{
    ...
}
使用ListOfParamPairs=List;
...
公共静态数据集GetXxxx(字符串函数名、ListOfParamPairs参数)
{
...
}

如果我没听错,您可以试试Linq:

object[][]
dictionary

编辑:如果我们必须切换到
列表
(我们希望保留初始顺序;字典对不符合顺序):

至:

 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();

如果我没弄错,你可以试试Linq:

object[][]
dictionary

编辑:如果我们必须切换到
列表
(我们希望保留初始顺序;字典对不符合顺序):

至:

 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();

如果我能正确理解你;To
var dictionary=parameters.ToDictionary(line=>line[0].ToString(),line=>line[1])?返回:
object[]]parameters=dictionary.Select(pair=>newobject[]{pair.Jey,pair.Value}).ToArray()
字典
没有任何顺序。若参数的顺序很重要,是的,你们必须切换到
List
或alikeIf I uderstand your right;To
var dictionary=parameters.ToDictionary(line=>line[0].ToString(),line=>line[1])?返回:
object[]]parameters=dictionary.Select(pair=>newobject[]{pair.Jey,pair.Value}).ToArray()
字典
没有任何顺序。若参数的顺序很重要,是的,您必须切换到
列表
或alikeThanks Dmitry。实际上,我必须保持参数的顺序。你能对更新发表评论吗?@pepr:如果我们从
dictionary
切换到
列表,你认为
List@pepr:嗯,
List
是一个很好的选择,前提是您没有太多(比如说,数千个)按名称寻址的参数。可能的(但在我看来,更糟糕的)选择是
List
谢谢你。实际上,我必须保持参数的顺序。你能对更新发表评论吗?@pepr:如果我们从
dictionary
切换到
列表,你认为
List@pepr:嗯,
List
是一个很好的选择,前提是您没有太多(比如说,数千个)按名称寻址的参数。可能的(但在我看来,更糟糕的)选择是
List
 using System.Linq;

 ...

 object[][] parameters = dictionary
   .Select(pair => new object[] {pair.Key, pair.Value})
   .ToArray();
 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();