namespace zero.Extensions; public static class EnumerableExtensions { public static IEnumerable Paging(this IEnumerable source, int pageNumber, int pageSize) { pageNumber = pageNumber.Limit(1, 10_000_000); pageSize = pageSize.Limit(1, 1_000); if (pageNumber <= 0 || pageSize <= 0) { throw new NotSupportedException("Both pageNumber and pageSize must be greater than zero"); } return source.Skip((pageNumber - 1) * pageSize).Take(pageSize); } public static bool TryGet(this IEnumerable source, Func predicate, out T model) { model = source.FirstOrDefault(predicate); return model != null; } public static bool TryAdd(this IList source, T model) where T : class { if (model == default) { return false; } source.Add(model); return true; } }