Конвертировать Dictionary.keyscollection в массив строк - PullRequest
53 голосов
/ 25 октября 2009

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

string[] keys = dictionary.Keys;

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

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

Ответы [ 5 ]

103 голосов
/ 25 октября 2009

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

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

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

string[] keys = new string[dictionary.Keys.Count];
dictionary.Keys.CopyTo(keys, 0);
4 голосов
/ 25 октября 2009

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

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

3 голосов
/ 25 октября 2009

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

string[] keys = dictionary.Keys.Select(x => x.ToString()).ToArray();
1 голос
/ 27 февраля 2018

Или, может быть, удобное общее расширение ...

    public static T2[] ToValueArray<T1, T2>(this Dictionary<T1, T2> value)
    {
        var values = new T2[value.Values.Count];
        value.Values.CopyTo(values, 0);

        return values;
    }
0 голосов
/ 25 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...