【问题标题】:How do i group a list of dynamic objects using linq given that the property names are dynamic?鉴于属性名称是动态的,如何使用 linq 对动态对象列表进行分组?
【发布时间】:2019-12-07 23:35:01
【问题描述】:

我正在尝试对动态对象列表中的结果进行分组。 我尝试了以下代码

    var results = ((IEnumerable)data).Cast<dynamic>().Where(x => x.dynamicProperyname));

属性名称本身也是动态的,因此我不能在我的查询中使用它,如上所示。有关如何解决此问题的任何建议?

【问题讨论】:

  • 数据是什么实际上?它是否支持索引器 API?
  • 可以使用反射获取类型,然后获取属性,再获取值。为什么呢?

标签: c# asp.net linq


【解决方案1】:

这应该可以解决问题 -

var propertyName = "dynamicProperyname";
var results = ((IEnumerable)data).Cast<dynamic>()
              .Where(x => x.GetType().GetProperty(propertyName)?.GetValue(x, null) ?? false);

上面的代码使用反射来获取属性的值。

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 2010-12-20
    • 1970-01-01
    • 2019-09-05
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2023-03-15
    相关资源
    最近更新 更多