internal static TravelDataResult FilterFunc(FilterRoot rootObj) { dynamic data = new ExpandoObject(); data.countries = rootObj.data.filter.countries as IList <Country2>; data.departureCities = rootObj.data.filter.departureCities as IList <ViewModels.DepartureCity>; var resultObj = new TravelDataResult() { success = rootObj.success, elapsedMilliseconds = rootObj.elapsedMilliseconds, data = new { countries = rootObj.data.filter.countries as IList <Country2>, departureCities = rootObj.data.filter.departureCities as IList <ViewModels.DepartureCity> } }; return(resultObj); }
protected internal override Expression ToExpression(Expression expression) { Type collectionType = expression.Type; ParameterExpression collectionParameter = Expression.Parameter(collectionType); Expression filterExpression = FilterRoot.ToExpression(collectionParameter); Type itemType = EnumerableExtensions.GetItemType(collectionType); ParameterExpression itemParameter = Expression.Parameter(itemType); Expression selectorExpression = itemParameter; foreach (JsonPathNode node in Nodes) { selectorExpression = node.ToExpression(selectorExpression); } LambdaExpression selectorLambda = Expression.Lambda(selectorExpression, itemParameter); MethodInfo methodSelect = methodDefinitionSelect.MakeGenericMethod(itemType, selectorExpression.Type); expression = Expression.Call(methodSelect, filterExpression, selectorLambda); return(base.ToExpression(expression)); }