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

Но здесь у меня нет этого идентификатора, но есть соответствующее «PropertyInfo». объект.

Как я должен достичь этого.

любезно руководство

Ответы на вопрос(1)

Решение Вопроса

Вы можете посмотреть значение свойства, используяproperty.GetValue(anObjectOfTypeT, null).

Так что-то вроде:

var refreshedList =  lst.Where(l => ((int)(property.GetValue(l, null)) < 0).ToList();

Это предполагает, что свойство всегда будет иметь тип int, хотя.

 13 февр. 2017 г., 04:52
Есть ли способ сделать это для других типов свойств?
 17 февр. 2017 г., 07:59
@ Maarten Я имею в виду, если мне нужно сделать это для нескольких свойств разных типов, есть ли другой способ, кроме создания разных переменных для каждого типа данных?
 13 февр. 2017 г., 08:47
@Scar Что вы имеете в виду, свойство типа string, double или какого-то другого типа? Вы можете изменить кастинг наint, но вы должны знать тип заранее.
 16 апр. 2013 г., 22:20
Гениально, как раз то, что мне нужно

Ваш ответ на вопрос