using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { public static class CollectionUtils { /// /// 去重添加 /// /// 泛型对象 /// 集合 /// 需添加的项 /// 比较 /// 集合 public static List DistinctAdd(this List list, T item, IEqualityComparer comparer = null) { if (list == null) return new List { item }; if (!list.Contains(item, comparer)) list.Add(item); return list; } public static List DistinctSelect(this IEnumerable list, Func selector) { return list.Select(selector).Distinct().ToList(); } public static List DistinctSelect(this IEnumerable list, Func predicate, Func selector) { return list.Where(predicate).Select(selector).Distinct().ToList(); } public static string SplitJoin(this IEnumerable list, string split) { list = list.DistinctSelect(it => it.IsNotNull(), it => it); return string.Join(split, list); } public static string SplitJoin(this IEnumerable list, Func selector, string split) { return list.Select(selector).SplitJoin(split); } public static string SplitJoin(this IEnumerable list, Func predicate, Func selector, string split) { return list.Where(predicate).Select(selector).SplitJoin(split); } public static bool IsNull(this T[] list) { return list == null || list.Length == 0; } public static bool IsNotNull(this T[] list) { return !list.IsNull(); } public static bool IsNull(this List list) { return list == null || list.Count == 0; } public static bool IsNotNull(this List list) { return !list.IsNull(); } } }