public void _01_BooksAdded() { Assert.IsTrue(queryable.Any()); Assert.IsTrue(queryable.Count() == 5); Console.WriteLine(queryable.ToList() .Select(bk => bk.name + "\t" + bk.author + "\t" + bk.count + "\t" + bk.genre.Aggregate((a, b) => a + ", " + b) + "\t" + bk.year) .Aggregate((a, b) => a + "\n" + b)); }
public PagedList(IMongoQueryable <T> superset, int pageNumber, int pageSize) { if (pageNumber < 1) { throw new ArgumentOutOfRangeException("pageNumber", pageNumber, "PageNumber cannot be below 1."); } if (pageSize < 1) { throw new ArgumentOutOfRangeException("pageSize", pageSize, "PageSize cannot be less than 1."); } TotalItemCount = superset == null ? 0 : superset.Count(); PageSize = pageSize; PageNumber = pageNumber; PageCount = TotalItemCount > 0 ? (int)Math.Ceiling(TotalItemCount / (double)PageSize) : 0; HasPreviousPage = PageNumber > 1; HasNextPage = PageNumber < PageCount; IsFirstPage = PageNumber == 1; IsLastPage = PageNumber >= PageCount; FirstItemOnPage = (PageNumber - 1) * PageSize + 1; var numberOfLastItemOnPage = FirstItemOnPage + PageSize - 1; LastItemOnPage = numberOfLastItemOnPage > TotalItemCount ? TotalItemCount : numberOfLastItemOnPage; if (superset != null && TotalItemCount > 0) { Subset.AddRange(pageNumber == 1 ? superset.Skip(0).Take(pageSize).ToList() : superset.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList() ); } }
private void Init(IMongoQueryable <T> source, int pageIndex, int pageSize, int?totalCount = null) { if (source == null) { throw new ArgumentNullException("source"); } if (pageSize <= 0) { throw new ArgumentException("pageSize must be greater than zero"); } TotalCount = totalCount ?? source.Count(); TotalPages = TotalCount / pageSize; if (TotalCount % pageSize > 0) { TotalPages++; } PageSize = pageSize; PageIndex = pageIndex; source = totalCount == null?source.Skip(pageIndex *pageSize).Take(pageSize) : source; AddRange(source); }
public QueryResult <QueryContractList> ListContracts(string contractType, int?offset, int limit) { IMongoQueryable <CirrusContractTable> totalQuary = mongoDb.CirrusContractTable.AsQueryable() .Where(q => q.ContractOpcode == "create" && q.ContractCodeType == contractType && q.Success == true); int total = totalQuary.Count(); int itemsToSkip = offset ?? (total < limit ? 0 : total - limit); IMongoQueryable <CirrusContractTable> cirrusContract = mongoDb.CirrusContractTable.AsQueryable() .Where(q => q.ContractOpcode == "create" && q.ContractCodeType == contractType && q.Success == true) .OrderBy(b => b.BlockIndex) .Skip(itemsToSkip) .Take(limit); var res = cirrusContract.ToList(); IEnumerable <QueryContractList> transactions = res.Select(item => new QueryContractList { ContractAddress = item.NewContractAddress, ContractCodeType = item.ContractCodeType, Error = item.Error, BlockIndex = item.BlockIndex, TransactionId = item.TransactionId }); return(new QueryResult <QueryContractList> { Items = transactions, Offset = itemsToSkip, Limit = limit, Total = total }); }
public void SearchByTitle(string movieToSearch) { this.movieToSearch = movieToSearch; exactInputMatchModel = (from item in collection.AsQueryable() where item.title == movieToSearch orderby item.title select item).Take(5); if (exactInputMatchModel.Count() == 0) { partialInputMatchModel = (from item in collection.AsQueryable() where item.title.Contains(movieToSearch) orderby item.title select item).Take(5); } ResponseHandler(); }
public void _06_IncrementBooksCount() { Console.WriteLine(queryable.ToList() .Select(bk => bk.name + "\t" + bk.count) .Aggregate((a, b) => a + "\n" + b)); Console.WriteLine(); var map = new BsonJavaScript( @" function() { emit('a', this.count) }"); var reduce = new BsonJavaScript( @" function(key, values) { return Array.sum(values) }"); var oldOverallCount = collection .MapReduce <ReduceResult <int> >(map, reduce) .Single().value; collection.UpdateMany( "{}", "{$inc: {count: 1}}"); var newOverallCount = collection .MapReduce <ReduceResult <int> >(map, reduce) .Single().value; Assert.IsTrue(newOverallCount - oldOverallCount == queryable.Count()); Console.WriteLine(queryable.ToList() .Select(bk => bk.name + "\t" + bk.count) .Aggregate((a, b) => a + "\n" + b)); }
public QueryResult <QueryContractCall> ContractCall(string address, string filterAddress, int?offset, int limit) { IMongoQueryable <CirrusContractTable> totalQuary = mongoDb.CirrusContractTable.AsQueryable() .Where(q => q.ToAddress == address); if (filterAddress != null) { totalQuary = totalQuary.Where(q => q.FromAddress == filterAddress); } int total = totalQuary.Count(); IMongoQueryable <CirrusContractTable> cirrusContract = mongoDb.CirrusContractTable.AsQueryable() .Where(q => q.ToAddress == address); if (filterAddress != null) { cirrusContract = cirrusContract.Where(q => q.FromAddress == filterAddress); } int itemsToSkip = offset ?? (total < limit ? 0 : total - limit); cirrusContract = cirrusContract .OrderBy(b => b.BlockIndex) .Skip(itemsToSkip) .Take(limit); var res = cirrusContract.ToList(); IEnumerable <QueryContractCall> transactions = res.Select(item => new QueryContractCall { Success = item.Success, MethodName = item.MethodName, ToAddress = item.NewContractAddress, GasUsed = item.GasUsed, GasPrice = item.GasPrice, Amount = item.Amount, ContractBalance = item.ContractBalance, FromAddress = item.FromAddress, Error = item.Error, BlockIndex = item.BlockIndex, TransactionId = item.TransactionId }); return(new QueryResult <QueryContractCall> { Items = transactions, Offset = itemsToSkip, Limit = limit, Total = total }); }
//Validation's methods. #region VALIDATIONS //Method for email validation. public bool CheckEmailPerson(string email) { try { IMongoCollection <Person> col = this.conn.GetCollection <Person>("persons"); IMongoQueryable <Person> persons = from person in col.AsQueryable <Person>() where person.Email == email select person; return(persons.Count() == 0); } catch (Exception) { return(false); } }
//Methods of login. #region LOGIN //Login method. public int Login() { try { IMongoCollection <UserSys> col = this.conn.GetCollection <UserSys>("usersys"); IMongoQueryable <UserSys> usersys = from x in col.AsQueryable <UserSys>() where x.Username == Hash.GenerateSHA512String(this.u.Username) && x.Password == Hash.GenerateSHA512String(this.u.Password) select x; return((usersys.Count() > 0) ? 1 : 0); } catch (Exception) { return(-1); } }
public static PaginatedItems <T> Paginate <T>(this IMongoQueryable <T> source, int rowsPerPage = 0, int pageNumber = 1) { if (rowsPerPage == 0) { return(new PaginatedItems <T> { PageCount = 1, TotalItemsCount = source.Count(), Items = source }); } var skip = Math.Max(0, pageNumber - 1) * rowsPerPage; var totalCount = source.Count(); var pageCount = (int)Math.Ceiling((double)totalCount / rowsPerPage); return(new PaginatedItems <T> { PageCount = pageCount, TotalItemsCount = totalCount, Items = source.Skip(skip).Take(rowsPerPage) }); }
/// <summary> /// 日志分页查询 /// </summary> /// <param name="pageIndex">页码</param> /// <param name="pageSize">分页大小</param> /// <param name="func">lambda表达式</param> /// <param name="totalCount">总数</param> /// <returns>查询结果</returns> public List <T> GetPageList <T>(int pageIndex, int pageSize, Expression <Func <T, bool> > func, out int totalCount) where T : Model.BaseInfo { IMongoCollection <T> mongoCollection = this.GetCollection <T>(); IMongoQueryable <T> mongoQueryable = mongoCollection.AsQueryable(); if (func != null) { mongoQueryable = mongoQueryable.Where(func); //.AsQueryable(); } totalCount = mongoQueryable.Count(); return(mongoQueryable .OrderByDescending(m => m.Time) .Skip((pageIndex) * pageSize).Take(pageSize) .ToList()); }
public int Count(Expression <Func <T, bool> > predicate) { return(collectionQueryable.Count(predicate)); }