using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; namespace LifePayment.Domain.Shared; /// <summary> /// é›†åˆæ‰©å±• /// </summary> public static class ListExtensions { /// <summary> /// 异æ¥å¾ªçޝ /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <param name="func"></param> /// <returns></returns> public static async Task ForEachAsync<T>(this List<T> list, Func<T, Task> action) { foreach (var value in list) { await action(value); } } /// <summary> /// 异æ¥å¾ªçޝ /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <param name="action"></param> /// <returns></returns> public static async Task ForEachAsync<T>(this IEnumerable<T> source, Func<T, Task> action) { foreach (var value in source) { await action(value); } } /// <summary> /// 是å¦ä¸ºnullæˆ–ç©ºé›†åˆ /// </summary> /// <param name="source"></param> /// <returns></returns> public static bool IsNullOrEmpty(this IEnumerable source) { return (source == null || !source.HasItems()); } /// <summary> /// 是å¦ä¸ä¸ºnullæˆ–ç©ºé›†åˆ /// </summary> /// <param name="source"></param> /// <returns></returns> public static bool IsNotNullOrEmpty(this IEnumerable source) { return !IsNullOrEmpty(source); } /// <summary> /// æ˜¯å¦æœ‰å…ƒç´ /// </summary> /// <param name="source"></param> /// <returns></returns> public static bool HasItems(this IEnumerable source) { return source != null && source.GetEnumerator().MoveNext(); } ///// <summary> ///// æ ¹æ®æŒ‡å®šé—´éš”å—符将集åˆåˆå¹¶ä¸ºå—符串 ///// </summary> ///// <param name="source"></param> ///// <param name="separator"></param> ///// <returns></returns> //public static string JoinAsString(this IEnumerable<string> source, string separator) //{ // return string.Join(separator, source); //} /// <summary> /// æ ¹æ®æŒ‡å®šé—´éš”å—符将集åˆåˆå¹¶ä¸ºå—符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <param name="separator"></param> /// <returns></returns> public static string JoinAsString<T>(this IEnumerable<T> source, string separator) { return string.Join(separator, source); } /// <summary> /// ICollectionæ‰¹é‡æ·»åŠ å…ƒç´ /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection"></param> /// <param name="items"></param> /// <exception cref="ArgumentNullException"></exception> public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> items) { if (collection == null) throw new ArgumentNullException(nameof(collection)); if (items == null) throw new ArgumentNullException(nameof(items)); if (collection is List<T> list) { list.AddRange(items); } else { foreach (var item in items) { collection.Add(item); } } } /// <summary> /// 转æ¢ä¸ºå€¼ä¸ºobject类型的å—å…¸ /// </summary> /// <typeparam name="TK"></typeparam> /// <typeparam name="TV"></typeparam> /// <param name="resource"></param> /// <returns></returns> public static Dictionary<TK, object> ToObjectDic<TK, TV>(this IDictionary<TK, TV> resource) where TV : class { var result = new Dictionary<TK, object>(); foreach (var item in resource) { result.Add(item.Key, (object)item.Value); } return result; } }