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;
|
}
|
}
|