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