使用 Linq.Dynamic where 方法和动态列表会出错

Using Linq.Dynamic where method with a dynamic list gives error

我正在阅读一些 JSON 并将其转换为动态列表。 以下是我的代码:

dynamic data = JObject.Parse(response);
var result = data.result;
var result = ((IEnumerable)arr).Cast<dynamic>().ToList();

var id = result[0].id;
var filtereddata = result.Where("id==1");

var filtereddata = result.Where("id==1");

出现错误 No property or field 'id' exists in type 'Object,而 var id = result[0].id; 似乎正常。

我解析的JSON是:

{
"count": 1,
"result": [
{
  "id": 11,
  "name": "Locations",

}]
}

如果需要更多信息,请告诉我。感谢您的宝贵时间。

编辑: 甚至尝试 var filtereddata = result.Where(c=>c.id==1).Select("id"); 使用 lambda 表达式,但仍然是同样的问题。

动态 LINQ 不适用于 dynamic 类型。 LINQ to Objects 可以工作,但由于您收到的过滤器为 string,因此它不适用。

解决方法是在应用动态 Where 之前使用临时匿名投影,然后选择回原始对象:

var filtereddata = result
    .Select(x => new { item = x, id = (int)x.id, name = (string)x.name })
    .Where("id==1")
    .Select(x => x.item);