Ich habe eine Methode, die eine zurückgibt IEnumerable<KeyValuePair<string, ArrayList>>
, aber einige der Aufrufer verlangen, dass das Ergebnis der Methode ein Wörterbuch ist. Wie kann ich das IEnumerable<KeyValuePair<string, ArrayList>>
in ein konvertieren, Dictionary<string, ArrayList>
damit ich es verwenden kann TryGetValue
?
Methode:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
Anrufer:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
c#
collections
dictionary
ienumerable
idictionary
Lernteller
quelle
quelle
Antworten:
Wenn Sie .NET 3.5 oder .NET 4 verwenden, können Sie das Wörterbuch ganz einfach mit LINQ erstellen:
Es gibt kein,
IEnumerable<T1, T2>
aber einKeyValuePair<TKey, TValue>
ist in Ordnung.quelle
Dictionary
dass eine nahmIEnumerable<KeyValuePair<TKey, TValue>>
wieList<T>
ein nimmtIEnumerable<T>
. Es gibt auch keineAddRange
oder sogarAdd
Schlüssel / Wert-Paare. Was ist damit?ToDictionary()
Ab .NET Core 2.0 ist der Konstruktor
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
jetzt vorhanden.quelle