private static void AddTypes(Dictionary <string, Type> dic, string name, Type type, KeyValuePair <string, ICollection <string> > select) { if (select.IsEmpty()) { return; } var propertyTypes = select.Value.Select(v => { var prop = type.GetProperty(v); return(new { Name = name + "_" + prop.Name, Type = prop.PropertyType }); }); if (!propertyTypes.Any()) { dic.Add(name, type); } else { foreach (var propertyType in propertyTypes) { dic.Add(propertyType.Name, propertyType.Type); } } }
private static IEnumerable <Expression> GetParameterExpressions(ParameterExpression arg, KeyValuePair <string, ICollection <string> > parameter) { if (parameter.IsEmpty()) { return(null); } if (parameter.Value == null || !parameter.Value.Any()) { return(new Expression[] { arg }); } var result = new List <Expression>(); foreach (var parameterName in parameter.Value) { result.Add(Expression.Property(arg, parameterName)); } return(result); }