【问题标题】:Dynamic LINQ - Groupby with ExpandoObject Results in Error: No Applicable Indexer动态 LINQ - 带有 ExpandoObject 的 Groupby 导致错误:没有适用的索引器
【发布时间】:2017-10-05 08:07:45
【问题描述】:

是否可以使用带有 ExpandoObject 的 Dynamic LINQ 执行 GroupBy?

考虑下面的例子;理想情况下,我想要一个 ExpandoObjects 的分组列表。

感谢您的宝贵时间。

var listOfExpandoObjects = new List<ExpandoObject>();
var expandoObject = new ExpandoObject();
((IDictionary<string, object>)expandoObject).Add("DynamicProperty", "RepeatedItem");
((IDictionary<string, object>)expandoObject).Add("OtherProperty", "First");
listOfExpandoObjects.Add(expandoObject);

expandoObject = new ExpandoObject();
((IDictionary<string, object>)expandoObject).Add("DynamicProperty", "RepeatedItem");
((IDictionary<string, object>)expandoObject).Add("OtherProperty", "Second");
listOfExpandoObjects.Add(expandoObject);

var dynamicGroupBy = "new ( it[\"DynamicProperty\"] )";
var groupedItems = listOfExpandoObjects.GroupBy(dynamicGroupBy, "it"); // <------- Error: 'No applicable indexer exists in type 'ExpandoObject''

【问题讨论】:

    标签: c# linq dynamic dynamic-linq


    【解决方案1】:

    我想你想要这样的东西

    dynamic expandoObject = new ExpandoObject();
    expandoObject.DynamicProperty = " RepeatedItem";
    expandoObject.OtherProperty = "First";
    
    dynamic secondExpandoObject = new ExpandoObject();
    secondExpandoObject.DynamicProperty = "RepeatedItem";
    secondExpandoObject.OtherProperty = "Second";
    
    var listOfExpandoObjects = new List<dynamic> { expandoObject, secondExpandoObject };
    
    var dynamicProperty = "DynamicProperty";
    
    var groupedItems =
        from IDictionary<string, object> expando in listOfExpandoObjects
        group expando by expando[dynamicProperty];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多