public IEnumerable <NewsDto> GetNewsList(FilterBaseDto filter) { using (var ctx = new Entities()) { var ns = ctx.News.Include(x => x.Images); //Questo equivale a select * FROM News e poi aggiungerà JOIN a Images ns = FilterQuery(filter, ns); var mapped = AutoMapper.Mapper.Map <IEnumerable <News>, IEnumerable <NewsDto> >(ns); return(mapped); } }
public IEnumerable <EventsDto> GetEventsList(FilterBaseDto filter) { using (var ctx = new Entities()) { var ns = ctx.Events.Include(x => x.Images); ns = FilterQuery(filter, ns); var mapped = AutoMapper.Mapper.Map <IEnumerable <Events>, IEnumerable <EventsDto> >(ns); return(mapped); } }
private static IQueryable <News> FilterQuery(FilterBaseDto filter, IQueryable <News> ns) { if (!string.IsNullOrEmpty(filter.Query)) { switch (filter.Field) { case FieldsEnum.NoField: ns = ns.Where(x => x.Title.Contains(filter.Query) || x.ShortDescription.Contains(filter.Query)); break; case FieldsEnum.Title: ns = ns.Where(x => x.Title.Contains(filter.Query)); break; case FieldsEnum.ShortDescription: ns = ns.Where(x => x.ShortDescription.Contains(filter.Query)); break; case FieldsEnum.Description: ns = ns.Where(x => x.Description.Contains(filter.Query)); break; case FieldsEnum.Author: ns = ns.Where(x => x.Author.Contains(filter.Query)); break; default: throw new ArgumentOutOfRangeException(); } } switch (filter.OrderByField) { case OrderByFieldsEnum.NoField: ns = filter.OrderByDescending == null || filter.OrderByDescending == true ? ns.OrderByDescending(x => x.CreationDate) : ns.OrderBy(x => x.CreationDate); break; case OrderByFieldsEnum.Title: ns = filter.OrderByDescending == true ? ns.OrderByDescending(x => x.Title) : ns.OrderBy(x => x.Title); break; case OrderByFieldsEnum.CreationDate: ns = filter.OrderByDescending == null || filter.OrderByDescending == true ? ns.OrderByDescending(x => x.CreationDate) : ns.OrderBy(x => x.CreationDate); break; case OrderByFieldsEnum.LastUpdateDate: ns = filter.OrderByDescending == null || filter.OrderByDescending == true ? ns.OrderByDescending(x => x.LastUpdateDate) : ns.OrderBy(x => x.LastUpdateDate); break; default: throw new ArgumentOutOfRangeException(); } return(ns); }