using System; using System.Collections.Generic; using System.Linq; namespace RPGCoreCommon.Helpers { public static class LinqExtensions { public static IEnumerable ForEach(this IEnumerable source, Action action) { foreach (var element in source) action.Invoke(element); return source; } public static IEnumerable ForEach(this IEnumerable source, Action action) { var index = 0; foreach (var element in source) action(index++, element); return source; } public static IEnumerable Sort(this IEnumerable source, Comparison comparison) { var list = source.ToList(); list.Sort(comparison); return list; } public static IEnumerable Sort(this IEnumerable source) { return source.OrderBy(x => x); } public static IEnumerable SortDescending(this IEnumerable source) { return source.OrderByDescending(x => x); } public static IEnumerable DictSelect(this IDictionary source, Func func) { foreach (var pair in source) yield return func(pair.Key, pair.Value); } public static IDictionary DictForEach(this IDictionary source, Action action) { foreach (var pair in source) action(pair.Key, pair.Value); return source; } public static string StringJoin(this IEnumerable source, string separator) { return string.Join(separator, source); } public static IEnumerable AppendIf(this IEnumerable source, T element, bool condition) { return condition ? source.Append(element) : source; } } }