/// <summary> /// 安全的转换成字典集 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TElement"></typeparam> /// <param name="source"></param> /// <param name="keySelector">键选择器</param> /// <param name="elementSelector">值选择器</param> /// <returns></returns> public static async Task <DisposableConcurrentDictionary <TKey, TElement> > ToDisposableConcurrentDictionaryAsync <TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource, Task <TElement> > elementSelector) where TElement : IDisposable { var dic = new DisposableConcurrentDictionary <TKey, TElement>(); await source.ForeachAsync(async item => dic[keySelector(item)] = await elementSelector(item)); return(dic); }
/// <summary> /// 安全的转换成字典集 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TElement"></typeparam> /// <param name="source"></param> /// <param name="keySelector">键选择器</param> /// <param name="elementSelector">值选择器</param> /// <returns></returns> public static DisposableConcurrentDictionary <TKey, TElement> ToDisposableConcurrentDictionary <TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector) where TElement : IDisposable { var dic = new DisposableConcurrentDictionary <TKey, TElement>(); foreach (var item in source) { dic[keySelector(item)] = elementSelector(item); } return(dic); }
/// <summary> /// 安全的转换成字典集 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="source"></param> /// <param name="keySelector">键选择器</param> /// <param name="defaultValue">键未找到时的默认值</param> /// <returns></returns> public static DisposableConcurrentDictionary <TKey, TSource> ToDisposableConcurrentDictionary <TSource, TKey>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, TSource defaultValue) where TSource : IDisposable { var dic = new DisposableConcurrentDictionary <TKey, TSource>() { FallbackValue = defaultValue }; foreach (var item in source) { dic[keySelector(item)] = item; } return(dic); }