You can use linq dynamic library to do this
public IQueryable<Person> Search(string column, string value)
{
return personCollection.Where(string.Format("{0} = @1", column), value);
}
Or you can create expressions yourself:
public IQueryable<Person> Search(string column, string value)
{
var param = Expression.Parameter(typeof(T), "x");
var prop = Expression.Property(param, column);
var val = Expression.Constant(value, prop.Type);
var equals = Expression.Equal(prop, val);
var lambda = Expression.Lambda(equals, param);
return personCollection.Where(lambda);
}
source
share