public IEnumerable <WorkItem> Get(WorkItemFilter filter) { try { var iQuery = filter.IncludeFeedbacks ? Db.Set <WorkItem>() .Include(it => it.CustomerFeedback) .Include(it => it.TeamFeedBack) .Include(it => it.WorkType) .Include(it => it.Customer) : Db.Set <WorkItem>() .Include(it => it.WorkType) .Include(it => it.Customer); var query = iQuery.AsQueryable(); if (filter.Categories != null && filter.Categories.Any()) { query = filter.CategoryOperation == CategoryOperation.Cross ? (from item in GetWorksByCategoriesCross(filter.Categories) join workItem1 in query on item.Id equals workItem1.Id select workItem1).AsQueryable() : (from item in GetWorksByCategoriesUnion(filter.Categories) join workItem1 in query on item.Id equals workItem1.Id select workItem1).AsQueryable(); } if (filter.CustomerId.HasValue) { query = query.Where(it => it.CustomerId == filter.CustomerId.Value); } if (filter.WorkTypeId.HasValue) { query = query.Where(it => it.WorkTypeId == filter.WorkTypeId.Value); } if (filter.ExecutorId.HasValue) { query = from workItem in query join workItemTeam in Db.Set <WorkItemTeam>() on workItem.Id equals workItemTeam.WorkItemId where workItemTeam.ExecutorId == filter.ExecutorId.Value select workItem; } return(query); //; } catch (Exception ex) { LogEventManager.Logger.Error(ex.Message, ex); throw; } }
public async Task <IEnumerable <WorkItem> > GetByFilter([FromQuery] WorkItemFilter filter) { return(_context.WorkItems.Where(filter.GetPredicate())); }