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