CSharp examples for System.Collections.Generic:IList
Convert the enumerable to a Dictionary using the keySelector to extract keys from values and the specified comparer. Fast paths for array and IList of T.
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System.Linq; using System.Diagnostics.Contracts; using System.Collections.ObjectModel; using System.Collections.Generic; using System;//from w w w . j a v a 2 s.co m public class Main{ /// <summary> /// Convert the enumerable to a Dictionary using the keySelector to extract keys from values and the specified comparer. Fast paths for array and IList of T. /// </summary> public static Dictionary<TKey, TValue> ToDictionaryFast<TKey, TValue>(this IEnumerable<TValue> enumerable, Func<TValue, TKey> keySelector, IEqualityComparer<TKey> comparer) { Contract.Assert(enumerable != null); Contract.Assert(keySelector != null); TValue[] array = enumerable as TValue[]; if (array != null) { return ToDictionaryFast(array, keySelector, comparer); } IList<TValue> list = enumerable as IList<TValue>; if (list != null) { return ToDictionaryFastNoCheck(list, keySelector, comparer); } Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>(comparer); foreach (TValue value in enumerable) { dictionary.Add(keySelector(value), value); } return dictionary; } /// <summary> /// Convert the list to a Dictionary using the keySelector to extract keys from values and the specified comparer. Optimized for IList of T input with fast path for array. /// </summary> public static Dictionary<TKey, TValue> ToDictionaryFast<TKey, TValue>(this IList<TValue> list, Func<TValue, TKey> keySelector, IEqualityComparer<TKey> comparer) { Contract.Assert(list != null); Contract.Assert(keySelector != null); TValue[] array = list as TValue[]; if (array != null) { return ToDictionaryFast(array, keySelector, comparer); } return ToDictionaryFastNoCheck(list, keySelector, comparer); } /// <summary> /// Convert the array to a Dictionary using the keySelector to extract keys from values and the specified comparer. Optimized for array input. /// </summary> public static Dictionary<TKey, TValue> ToDictionaryFast<TKey, TValue>(this TValue[] array, Func<TValue, TKey> keySelector, IEqualityComparer<TKey> comparer) { Contract.Assert(array != null); Contract.Assert(keySelector != null); Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>(array.Length, comparer); for (int i = 0; i < array.Length; i++) { TValue value = array[i]; dictionary.Add(keySelector(value), value); } return dictionary; } }