Comment utiliser LINQ avec des collections dynamiques

Existe-t-il un moyen de convertir l'objet dynamic en type IEnumerable pour filtrer la collection avec la propriété.

dynamic data = JsonConvert.DeserializeObject(response.Content);

J'ai besoin d'accéder à quelque chose comme ceci

var a = data.Where(p => p.verified == true)

Des Idées?

51
demandé sur Jon Skeet 2013-09-11 11:20:10

2 réponses

Tant que data est un IEnumerable d'un certain type, vous pouvez utiliser:

var a = ((IEnumerable) data).Cast<dynamic>()
                            .Where(p => p.verified);

Le Cast<dynamic>() est un IEnumerable<dynamic>, de sorte que le type du paramètre de l'expression lambda est également dynamic.

87
répondu Jon Skeet 2013-09-11 07:22:35

Essayez de lancer à IEnumerable<dynamic>

((IEnumerable<dynamic>)data).Where(d => d.Id == 1);

Cette approche est 4 fois plus rapide que les autres approches.

Bonne chance

30
répondu Yaser Moradi 2014-06-25 06:48:10