【问题标题】:Query a collection using PropertyInfo object in LINQ在 LINQ 中使用 PropertyInfo 对象查询集合
【发布时间】: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”对象。

我应该如何做到这一点。

请指导

【问题讨论】:

    标签: c# linq reflection


    【解决方案1】:

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

    比如:

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

    这假定属性将始终是 int 类型。

    【讨论】:

    • 太棒了,正是我需要的:)
    • 对于其他类型的房产有没有办法做到这一点?
    • @Scar 你是什么意思,字符串类型的属性,或双精度,或其他类型的属性?您可以将转换为int,但您需要事先知道类型。
    • @Maarten 我的意思是,如果我必须为不同类型的多个属性执行此操作,除了为每个数据类型创建不同的 var 之外,还有其他方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多