是否有一种方法可以将dynamic
对象转换为IEnumerable
类型以过滤具有属性的集合。
dynamic data = JsonConvert.DeserializeObject(response.Content);
我需要访问这样的内容
var a = data.Where(p => p.verified == true)
任何想法?
只要data
是某种类型的IEnumerable
,就可以使用:
var a = ((IEnumerable) data).Cast<dynamic>()
.Where(p => p.verified);
Cast<dynamic>()
以IEnumerable<dynamic>
结尾,因此lambda表达式的参数类型也为dynamic
。
尝试投射到IEnumerable<dynamic>
((IEnumerable<dynamic>)data).Where(d => d.Id == 1);
此方法比其他方法快4倍。
祝你好运
如果可以的话,理想的解决方案是在反序列化时指定类型,以免稍后进行转换。这比上面建议的方法干净得多。
所以,如果您有-
dynamic data = JsonConvert.DeserializeObject(response.Content);
然后只需将其更改为-
var data = JsonConvert.DeserializeObject<IEnumerable<dynamic>>(response.Content);