Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }