使用 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);
我正在阅读一些 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);