辞書の値のリストを配列に変換する最も効率的な方法は何ですか?
たとえば、Dictionary
があり、Key
がString
で、Value
がFoo
である場合、Foo[]
VS 2005、C#2.0を使用しています
// 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();
リストに保存します。それは容易です;
List<Foo> arr = new List<Foo>(dict.Values);
もちろん、配列でそれが特に必要な場合。
Foo[] arr = (new List<Foo>(dict.Values)).ToArray();
値にはToArray()関数があります。
Foo[] arr = new Foo[dict.Count];
dict.Values.CopyTo(arr, 0);
しかし、私はそれが効率的だとは思いません(実際に試したことはありませんが、これらすべての値を配列にコピーすると思います)。本当に配列が必要ですか?そうでない場合は、IEnumerableを渡そうとします。
IEnumerable<Foo> foos = dict.Values;
Linqを使用する場合は、次を試してください。
Dictionary<string, object> dict = new Dictionary<string, object>();
var arr = dict.Select(z => z.Value).ToArray();
どちらが速いか、良いかわかりません。両方とも私のために働く。
最近では、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);