我正在阅读一些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表达式,但仍然是同样的问题。
答案 0 :(得分:2)
动态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);