using SQLite; using System.Application.Models; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace System { public static class AsyncTableQueryExtensions { #region WhereOr /// public static AsyncTableQuery WhereOr(this AsyncTableQuery source, IReadOnlyList>> predicates) where T : new() { var predicate = ExpressionHelper.WhereOr(predicates); return source.Where(predicate); } /// public static AsyncTableQuery WhereOr(this AsyncTableQuery source, IEnumerable>> predicates) where T : new() => source.WhereOr(predicates.ToArray()); /// public static AsyncTableQuery WhereOr(this AsyncTableQuery source, params Expression>[] predicates) where T : new() { IReadOnlyList>> _predicates = predicates; return source.WhereOr(_predicates); } #endregion #region Paging /// /// 分页查询,调用此方法前必须进行排序 /// /// /// /// /// /// public static async Task> PagingAsync( this AsyncTableQuery source, int current = IPagedModel.DefaultCurrent, int pageSize = IPagedModel.DefaultPageSize) where TEntity : new() { var skipCount = (pageSize - 1) * pageSize; var total = await source.CountAsync(); var dataSource = await source.Skip(skipCount).Take(pageSize).ToListAsync(); var pagedModel = new PagedModel { Current = current, PageSize = pageSize, Total = total, DataSource = dataSource, }; return pagedModel; } #endregion } }