Как использовать LINQ с динамическими коллекциями
Есть ли способ конвертировать объект dynamic
в IEnumerable
Тип для фильтрации коллекции с помощью свойства.
dynamic data = JsonConvert.DeserializeObject(response.Content);
Мне нужно получить доступ к чему-то вроде этого
var a = data.Where(p => p.verified == true)
Любые идеи?
Ответы
Ответ 1
Пока data
является IEnumerable
какого-либо типа, вы можете использовать:
var a = ((IEnumerable) data).Cast<dynamic>()
.Where(p => p.verified);
Cast<dynamic>()
должен заканчиваться на IEnumerable<dynamic>
, так что тип параметра для лямбда-выражения также dynamic
.
Ответ 2
Попробуйте выполнить кастинг на IEnumerable<dynamic>
((IEnumerable<dynamic>)data).Where(d => d.Id == 1);
Этот подход в 4 раза быстрее, чем другие подходы.
удача