approved.GetType().GetProperties()
вернет объект PropertyInfo []. Даже если вы фильтруете его, используя Where
, оно все равно не является значением свойства, это в основном набор свойств, которые удовлетворяют критерию, даже если эта коллекция имеет только один элемент.
Чтобы получить определенное свойство по имени, лучше использовать метод GetProperty()
класса Type, например:
PropertyInfo pi = approved.GetType().GetProperty(columnName);
но вы еще не закончили. Вам все еще нужно отфильтровать объекты по значению свойства, и это делается с помощью метода GetValue()
для свойства, например:
bool isApproved = pi.GetValue(approved, null).Equals("Y");
или все в вашем контексте:
return from approved in db.Approved
where approved.GetType().GetProperty(columnName)
.GetValue(approved, null).Equals("Y")
select approved;