Mam Dictionary<string, List<Order>>
i chcę mieć listę kluczy w tablicy. Ale kiedy wybioręKonwersja Dictionary.keyscollection do tablicy ciągów znaków
To nie kompiluje.
Jak przekonwertować KeysCollection
na tablicę łańcuchów?
Mam Dictionary<string, List<Order>>
i chcę mieć listę kluczy w tablicy. Ale kiedy wybioręKonwersja Dictionary.keyscollection do tablicy ciągów znaków
To nie kompiluje.
Jak przekonwertować KeysCollection
na tablicę łańcuchów?
Zakładając, że używasz .NET 3.5 lub nowszy (using System.Linq;
):
string[] keys = dictionary.Keys.ToArray();
W przeciwnym razie trzeba będzie użyć metody CopyTo lub użyć pętli:
string[] keys = new string[dictionary.Keys.Count];
dictionary.Keys.CopyTo(keys, 0);
Niestety, Nie mam VS w pobliżu, aby to sprawdzić, ale myślę, że coś takiego może zadziałać:
var keysCol = dictionary.Keys;
var keysList = new List<???>(keysCol);
string[] keys = keysList.ToArray();
wher e ??? to twój kluczowy typ.
Skorzystaj z tego, jeśli klucze nie są typu ciąg. Wymaga LINQ.
string[] keys = dictionary.Keys.Select(x => x.ToString()).ToArray();
To zwraca 'IEnumerable
Z OP również wynika, że klucze są typu 'string' (chociaż pierwotnie wystąpił problem z formatowaniem, który uniemożliwił jego wyświetlenie). –
Jak mówi moja odpowiedź, użyj go, jeśli twój klucz nie jest typu string i nadal chcesz ciąg ... –
Z dictionary.Keys.CopyTo (keys, 0);
Jeśli nie potrzebujesz tablicę (które zazwyczaj nie trzeba) można po prostu iterację kluczy.
+1 dla "... iteracji kluczy"; to na ogół wydaje się lepsze niż ich kopiowanie. –
Albo przydatne rozszerzenie generic ...
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;
}
Korzystanie C++/CLI i .NET 3.5 uzyskać to, kiedy próbuję: 'error C2039: 'ToArray' nie jest członkiem„Systemu: : Collections :: Generic :: Dictionary :: KeyCollection'' –
@JonCage, 'ToArray' jest metodą rozszerzenia zdefiniowaną w' System.Linq.Enumerable'; o ile mi wiadomo, C++/CLI nie obsługuje metody rozszerzenia, więc musisz nazwać ją normalną metodą statyczną: 'System :: Linq :: Enumerable :: ToArray (dictionary.Keys)' –
Wiem, że to jest super stary, ale dla tych z nas, którzy tworzą program SharePoint, dziękujemy za uwzględnienie starszego rozwiązania ramowego. – iambriansreed