public static IOrderedQueryable <T> Order <T, TOrder>( this IQueryable <T> query, ISortParams sortParams, Expression <Func <T, TOrder> > ordersBy, SortDirs defaultSortDir = SortDirs.Asc) { return(query.Order(sortParams, new[] { ordersBy }, null, defaultSortDir)); }
/// <summary> /// model内の対象列の現在の順序を取得する。 /// </summary> /// <param name="model"></param> /// <param name="columnName">カラム名</param> /// <returns></returns> public static string GetCurrentSortOrder(this ISortParams model, string columnName) { if (model?.SortParams == null) { return(""); } string result = model.SortParams.Where(m => m.ColumnName == columnName).Select(m => m.Order).FirstOrDefault(); return(result); }
public static IOrderedQueryable <T> Order <T, TOrder>( this IQueryable <T> query, ISortParams sortParams, IEnumerable <Expression <Func <T, TOrder> > > ordersBy, SortDirs[] sortDirs = null, SortDirs defaultSortDir = SortDirs.Asc) { //Choose between defaults and selected orders string[] _ordersBy = null; SortDirs[] _sortDirs = null; if (sortParams != null && sortParams.SortBy != null && sortParams.SortBy.Any()) { _ordersBy = sortParams.SortBy; _sortDirs = sortParams.SortDir; } else { _ordersBy = ordersBy.Select(o => ExpressionHelper.GetExpressionText(ExpressionHelper.RemoveConvert(o))).ToArray(); _sortDirs = ordersBy.Select((o, i) => sortDirs != null && sortDirs.Where((x, ix) => i == ix).Any() ? sortDirs.Where((x, ix) => i == ix).FirstOrDefault() : defaultSortDir).ToArray(); } //Apply Orders var y = 0; foreach (var o in _ordersBy) { if (y == 0) { query = query.OrderByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc); } else { query = ((IOrderedQueryable <T>)query).ThenByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc); } y++; } return((IOrderedQueryable <T>)query); }
public IQueryable <Note> Search(ISearchParams searchParams, ISortParams sortParams) { var query = _context.Notes.AsQueryable(); if (searchParams.CourseId.HasValue) { query = query.Where(x => x.CourseId == searchParams.CourseId); } else if (searchParams.UniversityId.HasValue) { query = query.Where(x => x.Course.UniversityId == searchParams.UniversityId); } else if (searchParams.VoivodeshipId.HasValue) { query = query.Where(x => x.Course.University.VoivodeshipId == searchParams.VoivodeshipId); } if (!string.IsNullOrWhiteSpace(searchParams.NoteName)) { query = query.Where(x => x.Name.Contains(searchParams.NoteName)); } if (searchParams.Semester.HasValue) { query = query.Where(x => x.Semester == searchParams.Semester); } var sortColumn = new Func <Note, object>(x => x.Name); if (!string.IsNullOrWhiteSpace(sortParams.SortBy)) { switch (sortParams.SortBy) { case "price": sortColumn = x => x.Price; break; case "name": sortColumn = x => x.Name; break; case "created": sortColumn = x => x.CreatedAt; break; case "updated": sortColumn = x => x.ModifiedAt; break; } } if (!string.IsNullOrEmpty(sortParams.SortOrder) && sortParams.SortOrder.ToUpper() == "DESC") { query = query.OrderByDescending(x => sortColumn(x)); } else { query = query.OrderBy(x => sortColumn(x)); } return(query); }
/// <summary> /// 検索対象列に含まれるかを確認する。 /// </summary> /// <param name="model"></param> /// <param name="sortColumns">検索対象列</param> /// <returns></returns> public static List <SortParam> CheckSortParams(this ISortParams model, IEnumerable <string> sortColumns) { var result = CheckSortParams(model?.SortParams, sortColumns); return(result); }
private void CloseStartupForm(object sender, ISortParams e) { StartupForm.Hide(); }
private void RunBackgroundWorker(object sender, ISortParams e) { BackgroundWorker.RunWorkerAsync(); }
private void ShowProgressForm(object sender, ISortParams e) { ProgressForm.Show(); }
private void UpdateProgressForm(object sender, ISortParams e) { ProgressForm.progressBar.Maximum = Service.Tasks.Count; ProgressForm.progressBar.Update(); ProgressForm.UpdateReadyTotalField(); }
private void PrepareBackgroundWork(object sender, ISortParams e) { Service.PrepareTasks(e); }
public async Task <IList <PasswordSite> > GetAllPasswords(string userId, string search, ISortParams sortParams, IPageParams pageParams) => await dataContext.PasswordSites .Where(x => x.UserId == userId) .Where(string.IsNullOrEmpty(search), x => x.NameSite.Contains(search) || x.UserNameSite.Contains(search)) .OrderBy(sortParams, "nameSite", x => x.NameSite) .ThenBy(sortParams, "userNameSite", x => x.UserNameSite) .ThenBy(sortParams, "password", x => x.Password) .Skip(pageParams.Skip) .Take(pageParams.Take) .ToListAsync();
public static IOrderedQueryable <TSource> ThenBy <TSource, TProp>(this IOrderedQueryable <TSource> query, ISortParams sortParams, string prop, Expression <Func <TSource, TProp> > expression) { return(query.AsQueryable().OrderBy(sortParams, prop, expression)); }
public static IOrderedQueryable <TSource> OrderBy <TSource, TProp>(this IQueryable <TSource> query, ISortParams sortParams, string prop, Expression <Func <TSource, TProp> > expression) { if (sortParams == null || !sortParams.SortBy.Any(x => string.Compare(x, prop, true) == 0)) { return((IOrderedQueryable <TSource>)query); } var index = Array.FindIndex(sortParams.SortBy, x => string.Compare(x, prop, true) == 0); var dir = index > sortParams.SortDir.Length ? SortDirs.Asc : sortParams.SortDir[index]; if (dir == SortDirs.Asc) { return(query.OrderBy(expression)); } else { return(query.OrderByDescending(expression)); } }