public IEnumerable <AspNetUser> Search(List <AspNetUser> users, int page, int recordsPerPage, string term, SortBy sortBy, SortOrder sortOrder, out int pageSize, out int TotalItemCount) { //users = new List<AspNetUser>();///////// var queryable = AspNetUsers.AsQueryable(); #region بر اساس متن if (!string.IsNullOrEmpty(term)) { queryable = queryable.Where(c => c.UserName.Contains(term) || c.Email.Contains(term) || c.NormalizedEmail.Contains(term) || c.PhoneNumber.Contains(term)); } #endregion #region مرتب سازی switch (sortBy) { //case SortBy.AddDate: // queryable = sortOrder == SortOrder.Asc ? queryable.OrderBy(u => u.AddDate) : queryable.OrderByDescending(u => u.AddDate); // break; case SortBy.AddDate: queryable = sortOrder == SortOrder.Asc ? queryable.OrderBy(u => u.Email).ThenBy(u => u.EmailConfirmed) : queryable.OrderByDescending(u => u.Email).ThenByDescending(u => u.EmailConfirmed); break; case SortBy.DisplayName: queryable = sortOrder == SortOrder.Asc ? queryable.OrderBy(u => u.UserName).ThenBy(u => u.PhoneNumber) : queryable.OrderByDescending(u => u.UserName).ThenByDescending(u => u.PhoneNumber); break; default: break; } #endregion #region دریافت تعداد کل صفحات TotalItemCount = queryable.Count(); pageSize = (int)Math.Ceiling((double)TotalItemCount / recordsPerPage); page = page > pageSize || page < 1 ? 1 : page; #endregion #region دریافت تعداد رکوردهای مورد تیاز var skiped = (page - 1) * recordsPerPage; queryable = queryable.Skip(skiped).Take(recordsPerPage); #endregion return(queryable.Select(u => new AspNetUser { Id = u.Id, UserName = u.UserName, NormalizedUserName = u.NormalizedUserName, PhoneNumber = u.PhoneNumber, PhoneNumberConfirmed = u.PhoneNumberConfirmed, Email = u.Email, EmailConfirmed = u.EmailConfirmed, NormalizedEmail = u.NormalizedEmail, AccessFailedCount = u.AccessFailedCount, TwoFactorEnabled = u.TwoFactorEnabled, Comments = u.Comments, ConcurrencyStamp = u.ConcurrencyStamp, LockoutEnabled = u.LockoutEnabled, LockoutEnd = u.LockoutEnd, PasswordHash = u.PasswordHash, Projects = u.Projects, SecurityStamp = u.SecurityStamp, //AddDate = u.AddDate.ToShortDateString(), //Name = u.Name, //Family = u.Family, }).ToList()); }