Sprache: C#
Auch Wörterbücher kann man mit LINQ bearbeiten. Als Ergebnis erhält man jedoch nie ein neues Wörterbuch, stattdessen immer ein [u]IEnumerable<KeyValuePair<TKey, TValue>>[/u].
Diese Erweiterungsmethode wandelt die Auflistung in ein Wörterbuch um, ohne das Parameter erwartet werden. Die standardmäßige [u]ToDictionary[/u]-Methode verlangt leider [b]immer[/b] 2 Funktionen, die angeben wie der Schlüssel und wie der Wert ermittelt werden sollen. Diese Methode erspart einem die Parameterübergabe.
[b]Hinweis:[/b] Auflistungen wie [u]IOrderedEnumerable<T>[/u] erben von IEnumerable und können somit problemlos umgewandelt werden.
[b]Benötigte Namespaces[/b]
System.Collections.Generic
System.Linq
/// <summary>
/// Erstellt ein <see cref="System.Collections.Generic.Dictionary{TKey,TValue}"/> aus einem <see cref="System.Collections.Generic.IEnumerable{T}"/> mit <see cref="System.Collections.Generic.KeyValuePair{TKey,TValue}"/> Werten.
/// </summary>
/// <typeparam name="TKey">Der Typ von dem die Schlüssel in dem Wörterbuch sind.</typeparam>
/// <typeparam name="TValue">Der Typ von dem die Werte in dem Wörterbuch sind.</typeparam>
/// <param name="source">Die Quellliste mit den Wörterbucheinträgen.</param>
/// <returns>Ein Wörterbuch mit den Einträgen der <paramref name="source"/> Liste.</returns>
public static Dictionary<TKey, TValue> ToDictionary<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> source)
{
return source.ToDictionary(x => x.Key, x => x.Value);
}
/// <summary>
/// Erstellt ein <see cref="System.Collections.Generic.Dictionary{TKey,TValue}"/> aus einem <see cref="System.Collections.Generic.IEnumerable{T}"/> mit <see cref="System.Collections.Generic.KeyValuePair{TKey,TValue}"/> Werten.
/// </summary>
/// <typeparam name="TKey">Der Typ von dem die Schlüssel in dem Wörterbuch sind.</typeparam>
/// <typeparam name="TValue">Der Typ von dem die Werte in dem Wörterbuch sind.</typeparam>
/// <param name="source">Die Quellliste mit den Wörterbucheinträgen.</param>
/// <returns>Ein Wörterbuch mit den Einträgen der <paramref name="source"/> Liste.</returns>
public static Dictionary<TKey, TValue> ToDictionary<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> source)
{
return source.ToDictionary(x => x.Key, x => x.Value);
}
Alte URL:
/snippet/ienumerablekeyvaluepairtk-tv-zu-dictionarytk-tv/4884