在LINQ中使用PropertyInfo对象查询集合

时间:2012-07-11 11:21:26

标签: c# linq reflection

我有一个像这样的签名的方法

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&lt; 0

在一个简单的场景中,它就像这个

一样简单
lst.where(u=>u.ID<0)

但在这里我没有那个ID属性,但有相应的“PropertyInfo”对象。

我该如何实现这一点。

请指导

1 个答案:

答案 0 :(得分:5)

您可以使用property.GetValue(anObjectOfTypeT, null)查找属性值。

类似于:

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

这假设该属性将始终为int类型。