public async Task <IEnumerable <Purchase> > GetPurchases(PurchaseQuery queryObj) { /* return await _context.purchases * .Include(a => a.dbAcct) * .Include(p => p.purchaseItems) * .ThenInclude(pr => pr.Products) * .ToListAsync(); */ var query = _context.purchases .Include(p => p.purchaseItems) .ThenInclude(pr => pr.Products) .Include(a => a.dbAcct).AsQueryable(); //Expression<Func<Purchase,object>> exp ; //Dictionary<string, Expression <Func<Purchase,object>>> columnMap = new Dictionary<string, Expression<Func<Purchase,object>>>(); var columnMap = new Dictionary <string, Expression <Func <Purchase, object> > >() { ["acct"] = pr => pr.dbAcct.acctName }; // columnMap.Add("acct", pr => pr.dbAcct.acctName); old /* if (queryObj.acctId.HasValue) * query = query.Where(pr => pr.accId == queryObj.acctId); * * if (queryObj.SortBy == "account") * query = (queryObj.IsSortAscending) ? query.OrderBy(p => p.dbAcct.acctKey) * : query.OrderByDescending(p => p.dbAcct.acctKey); */ if (queryObj.IsSortAscending) { query = query.OrderBy(columnMap[queryObj.SortBy]); } else { query = query.OrderByDescending(columnMap[queryObj.SortBy]); } /* //query = query.Where(pr => pr.accId == 39); */ return(await query.ToListAsync()); }
public override Expression <Func <Purchase, bool> > ToQuery() => PurchaseQuery.GetQuery(this);