Запрос коллекции с использованием объекта 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, хотя.