在 LINQ 中使用 PropertyInfo 对象查询集合
Posted
技术标签:
【中文标题】在 LINQ 中使用 PropertyInfo 对象查询集合【英文标题】:Query a collection using PropertyInfo object in LINQ 【发布时间】:2012-07-11 11:21:25 【问题描述】:我有一个带有这样签名的方法
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
现在我想查询该集合以获取其所有值
属性名称
在一个简单的场景中,就这么简单
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 类型。
【讨论】:
太棒了,正是我需要的:) 对于其他类型的房产有没有办法做到这一点? @Scar 你是什么意思,字符串类型的属性,或双精度,或其他类型的属性?您可以将转换为int
,但您需要事先知道类型。
@Maarten 我的意思是,如果我必须为不同类型的多个属性执行此操作,除了为每个数据类型创建不同的 var 之外,还有其他方法吗?以上是关于在 LINQ 中使用 PropertyInfo 对象查询集合的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法从该属性的 getter 中获取 PropertyInfo?