public async Task <List <string> > GetMultiSelectValues(int scenarioId, IMultiSelectField field) { var query = Context.RecommendationProductSummary.Where(x => x.ScenarioId == scenarioId); var distinctStringQuery = DistinctFieldValues(query, _recommendationMap, field); var results = await distinctStringQuery.ToListAsync(); return(results); }
public async Task <List <string> > GetMultiSelectValues(int scenarioId, IMultiSelectField field) { return(await _recommendationProductSummaryRepository.GetMultiSelectValues(scenarioId, field)); }
public static IQueryable <string> DistinctFieldValues <T>(IQueryable <T> query, EnumMap <RecommendationsKey, T> map, IMultiSelectField field) { if (!Enum.TryParse(field.Key, true, out RecommendationsKey key)) { throw new Exception("Unknown multi-select key in repository"); } var propertyName = map.Resolve(key); Type t = typeof(RecommendationProductSummary); PropertyInfo property = t.GetProperty(propertyName); var resultQuery = query.Select(ds => Convert.ToString(property.GetValue(ds))).Distinct().OrderBy(x => x); return(resultQuery); }