Подтвердить что ты не робот

Преобразование Dictionary.keyscollection в массив строк

У меня есть Dictionary<string, List<Order>>, и я хочу иметь список ключей в массиве. Но когда я выбираю

string[] keys = dictionary.Keys;

Это не компилируется.

Как преобразовать KeysCollection в массив строк?

4b9b3361

Ответ 1

Предполагая, что вы используете .NET 3.5 или новее (using System.Linq;):

string[] keys = dictionary.Keys.ToArray();

В противном случае вам придется использовать метод CopyTo или использовать цикл:

string[] keys = new string[dictionary.Keys.Count];
dictionary.Keys.CopyTo(keys, 0);

Ответ 2

С dictionary.Keys.CopyTo (keys, 0);

Если вам не нужен массив (который вам обычно не нужен), вы можете просто перебирать ключи.

Ответ 3

Используйте это, если ваши ключи не имеют строку типа. Для этого требуется LINQ.

string[] keys = dictionary.Keys.Select(x => x.ToString()).ToArray();

Ответ 4

К сожалению, у меня нет VS поблизости, чтобы проверить это, но я думаю, что что-то вроде этого может работать:

var keysCol = dictionary.Keys;
var keysList = new List<???>(keysCol);
string[] keys = keysList.ToArray();

где??? это ваш ключевой тип.