Вам нужно взглянуть на выражения linq. Вот небольшой пример, который должен работать для выбора одного свойства, выбор более сложного становится более сложным, но обычно это выполнимо, если вы определяете тип со свойствами, которые вы выбираете (например, не используйте анонимные типы в запросах, которые вы генерируют).
using System.Linq.Expressions;
...
IQueryable<T> query = someQuery;
Expression expression = query.Expression;
ParameterExpression obj = Expression.Parameter(query.ElementType, "obj");
MemberExpression property = Expression.PropertyOrField(obj, propertyName);
Expression<Func<T,bool>> lambda = Expression.Lambda<Func<T,bool>>(property, obj);
query = query.Where(lambda);
По крайней мере, это общая идея