将字典值转换为数组
Posted
技术标签:
【中文标题】将字典值转换为数组【英文标题】:Convert dictionary values into array 【发布时间】:2010-09-16 20:36:49 【问题描述】:将字典的值列表转换为数组的最有效方法是什么?
例如,如果我有一个Dictionary
,其中Key
是String
,Value
是Foo
,我想得到Foo[]
我正在使用 VS 2005,C# 2.0
【问题讨论】:
【参考方案1】:// dict is Dictionary<string, Foo>
Foo[] foos = new Foo[dict.Count];
dict.Values.CopyTo(foos, 0);
// or in C# 3.0:
var foos = dict.Values.ToArray();
【讨论】:
扩展 .ToArrayusing System.Linq;
【参考方案2】:
将其存储在列表中。比较容易;
List<Foo> arr = new List<Foo>(dict.Values);
当然,如果你特别想要它在一个数组中;
Foo[] arr = (new List<Foo>(dict.Values)).ToArray();
【讨论】:
【参考方案3】:Values 上有一个 ToArray() 函数:
Foo[] arr = new Foo[dict.Count];
dict.Values.CopyTo(arr, 0);
但我认为它效率不高(我还没有真正尝试过,但我猜它会将所有这些值复制到数组中)。你真的需要一个数组吗?如果没有,我会尝试通过 IEnumerable:
IEnumerable<Foo> foos = dict.Values;
【讨论】:
【参考方案4】:如果您想使用 linq,那么您可以尝试以下操作:
Dictionary<string, object> dict = new Dictionary<string, object>();
var arr = dict.Select(z => z.Value).ToArray();
我不知道哪个更快或更好。两者都对我有用。
【讨论】:
dict.Values.ToArray()
做同样的事情,但没有通过委托实现每个值的开销。【参考方案5】:
如今,一旦有了 LINQ,就可以将字典键及其值转换为单个字符串。
您可以使用以下代码:
// convert the dictionary to an array of strings
string[] strArray = dict.Select(x => ("Key: " + x.Key + ", Value: " + x.Value)).ToArray();
// convert a string array to a single string
string result = String.Join(", ", strArray);
【讨论】:
以上是关于将字典值转换为数组的主要内容,如果未能解决你的问题,请参考以下文章