【问题标题】:Filter an ExpandoObject list with a query string使用查询字符串过滤 ExpandoObject 列表
【发布时间】:2022-06-10 18:14:57
【问题描述】:

我有一个名为 indexesExpandoObject 列表。

    var indexes = new List<ExpandoObject>();

    var x = new ExpandoObject() as IDictionary<string, Object>;
    x.Add("name", "elon");
    x.Add("prod", "spacex");

    indexes.Add(x);

    var y = new ExpandoObject() as IDictionary<string, Object>;
    y.Add("title", "xx");
    y.Add("description", "yy");

    indexes.Add(y);

我需要使用queryString 过滤该列表,例如“name eq \“elon\” &amp;&amp; prod eq \“spacex\””

我尝试了类似的方法:

var query = indexes.AsQueryable();
var filteredList = query.Where(queryString);

但它不起作用。如何使用查询字符串过滤 ExpandoObject 列表?

【问题讨论】:

  • 请给minimal reproducible exampleAsQueryable 是实体框架的一部分,直到 .net7(仍处于预览状态):然后它仍然使用 IEnumerable 来处理像 List 这样的普通集合。为什么不使用普通的 Linq?
  • 因为我从外部获取查询字符串。它始终是一个字符串术语。我正在尝试在不使用标记器的情况下找到解决方案。
  • name eq \“elon\” 是一个什么样的查询字符串呢?你希望 Linq 如何理解它?为什么要使用 ExpandoObjects?
  • 您好@JHBonarius,我们可以将字符串术语作为谓词应用于Where 来过滤普通对象列表。但在这种情况下,我没有预定义的属性。属性只能决定运行时。
  • 过滤诸如name eq \“elon\”从外部来源捕获的术语。我必须检查列表中是否有满足过滤条件的对象。

标签: c# .net predicate iqueryable expandoobject


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2016-07-16
相关资源
最近更新 更多