using NetWorkHelper.Helper; using NetWorkHelper.ICommond; using System; using System.Collections.Generic; namespace NetWorkHelper.ICollections { /// /// CollectionConverter 用于转换集合内的元素或集合类型。 /// public static class CollectionConverter { #region ConvertAll /// /// ConvertAll 将source中的每个元素转换为TResult类型 /// public static List ConvertAll(IEnumerable source, CommonMethod.Func converter) { return CollectionConverter.ConvertSpecification(source, converter, null); } #endregion #region ConvertSpecification /// /// ConvertSpecification 将source中的符合predicate条件元素转换为TResult类型 /// public static List ConvertSpecification(IEnumerable source, CommonMethod.Func converter, Predicate predicate) { List list = new List(); CollectionHelper.ActionOnSpecification(source, delegate (TObject ele) { list.Add(converter(ele)); }, predicate); return list; } #endregion #region ConvertFirstSpecification /// /// ConvertSpecification 将source中的符合predicate条件的第一个元素转换为TResult类型 /// public static TResult ConvertFirstSpecification(IEnumerable source, CommonMethod.Func converter, Predicate predicate) { TObject target = CollectionHelper.FindFirstSpecification(source, predicate); if (target == null) { return default(TResult); } return converter(target); } #endregion #region CopyAllToList public static List CopyAllToList(IEnumerable source) { List copy = new List(); CollectionHelper.ActionOnEach(source, delegate (TObject t) { copy.Add(t); }); return copy; } #endregion #region CopySpecificationToList public static List CopySpecificationToList(IEnumerable source, Predicate predicate) { List copy = new List(); CollectionHelper.ActionOnSpecification(source, delegate (TObject t) { copy.Add(t); }, predicate); return copy; } #endregion #region ConvertListUpper /// /// ConvertListUpper 将子类对象集合转换为基类对象集合 /// public static List ConvertListUpper(IList list) where T : TBase { List baseList = new List(list.Count); for (int i = 0; i < list.Count; i++) { baseList.Add(list[i]); } return baseList; } #endregion #region ConvertListDown /// /// ConvertListDown 将基类对象集合强制转换为子类对象集合 /// public static List ConvertListDown(IList baseList) where T : TBase { List list = new List(baseList.Count); for (int i = 0; i < baseList.Count; i++) { list.Add((T)baseList[i]); } return list; } #endregion #region ConvertArrayToList /// /// ConverArrayToList 将数组转换为List /// public static List ConvertArrayToList(TElement[] ary) { if (ary == null) { return null; } return CollectionHelper.Find(ary, null); } #endregion #region ConvertListToArray /// /// ConverListToArray 将List转换为数组 /// public static TElement[] ConvertListToArray(IList list) { if (list == null) { return null; } TElement[] ary = new TElement[list.Count]; for (int i = 0; i < ary.Length; i++) { ary[i] = list[i]; } return ary; } #endregion } }