Запрос коллекции с использованием объекта PropertyInfo в LINQ
У меня есть метод с такой подписью
void RefreshMethod<T>(IEnumerable<T> lst, string propertyName) where T:class
{
Type type = typeof(T);
PropertyInfo property = type.GetProperties().Single(u => u.Name == primaryKeyProperty);
//query goes here
}
Теперь я хочу запросить эту коллекцию для получения всех значений которых
propertyName < 0
В простом сценарии это было бы так просто, как это
lst.where(u=>u.ID<0)
Но здесь у меня нет этого свойства ID, но есть соответствующий объект "PropertyInfo".
Как я должен достичь этого.
любезно руководство
1 ответ
Решение
Вы можете посмотреть значение свойства, используя property.GetValue(anObjectOfTypeT, null)
,
Так что-то вроде:
var refreshedList = lst.Where(l => ((int)(property.GetValue(l, null)) < 0).ToList();
Это предполагает, что свойство всегда будет иметь тип int, хотя.