85

辞書の値のリストを配列に変換する最も効率的な方法は何ですか?

たとえば、Dictionarywhere KeyisStringValueis がある場合Foo、取得したいFoo[]

VS 2005、C# 2.0 を使用しています

4

5 に答える 5

136
// 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();
于 2008-10-13T09:05:08.490 に答える
17

リストに保存します。それは容易です;

List<Foo> arr = new List<Foo>(dict.Values);

もちろん、特に配列にしたい場合は、

Foo[] arr = (new List<Foo>(dict.Values)).ToArray();
于 2012-03-29T15:20:07.320 に答える
7

Values には ToArray() 関数があります。

Foo[] arr = new Foo[dict.Count];    
dict.Values.CopyTo(arr, 0);

しかし、私はそれが効率的だとは思いません (実際に試したことはありませんが、これらすべての値を配列にコピーすると思います)。本当にアレイが必要ですか? そうでない場合は、IEnumerable を渡そうとします。

IEnumerable<Foo> foos = dict.Values;
于 2008-10-13T09:09:43.457 に答える
6

linq を使用する場合は、次の手順を試してください。

Dictionary<string, object> dict = new Dictionary<string, object>();
var arr = dict.Select(z => z.Value).ToArray();

どちらが速いか、どちらが優れているかはわかりません。どちらも私のために働きます。

于 2013-02-21T13:49:16.577 に答える