public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName)
{
var param = Expression.Parameter(typeof(Approved), "x");
var predicate = Expression.Lambda<Func<Approved,bool>>(
Expression.Equal(
Expression.PropertyOrField(param, columnName),
Expression.Constant("Y")
), param);
return db.Approved.Where(predicate);
}
编辑;如果属性实际上是char?
, i.e. 'Y'
not "Y"
, then:
public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName)
{
var param = Expression.Parameter(typeof(Approved), "x");
Expression prop;
var predicate = Expression.Lambda<Func<Approved, bool>>(
Expression.Equal(
(prop = Expression.PropertyOrField(param, columnName)),
Expression.Constant(prop.Type == typeof(string) ?
(object)"Y" : (object)'Y', prop.Type)
), param);
return db.Approved.Where(predicate);
}
(这现在可以应对所有string
, char
and char?