// The return type can be changed to IEnumerable, however to support // paging and sorting, the following parameters must be added: // int maximumRows // int startRowIndex // out int totalRowCount // string sortByExpression public IQueryable gvAllUsers_GetData() { using (WebUsersController wuc = new WebUsersController()) using(WebUserInfosController wuic = new WebUserInfosController()) { var allInfo = wuic.Get().Select(i=> new { UserID = i.UserID, FirstName = i.FName, LastName = i.LName }); var allUsers = wuc.Get(); var joined = allUsers.GroupJoin(allInfo, i => i.UserID, j => j.UserID, (i, j) => new { Login = i, Info = j.FirstOrDefault() }); return joined.Select(i => new UserResult() { Email = i.Login.Email, FirstName = i.Info == null ? null : i.Info.FirstName, LastName = i.Info == null ? null : i.Info.LastName, UserID = i.Login.UserID }).OrderBy(i => i.LastName).ThenBy(i => i.FirstName).AsQueryable<UserResult>(); } }
public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords) { MembershipUserCollection users = new MembershipUserCollection(); // Retrieve all users for the current application name from the database using (WebUsersController swuc = new WebUsersController()) { IEnumerable<WebUser> usersInApplication = swuc.Get(); totalRecords = usersInApplication.Distinct().Count(); if (totalRecords <= 0) { return users; } IEnumerable<WebUser> userEntities = usersInApplication.OrderBy(u => u.Email).Skip(pageIndex * pageSize).Take(pageSize); foreach (WebUser user in userEntities) { users.Add(GetMembershipUserFromPersistedEntity(user)); } return users; } }