Dissortingbution de la liste dans la liste

J’ai une List avec des membres. Je voudrais List la liste (et tous ses membres en particulier) dans un type List , où ChildClass hérite de BaseClass . Je sais que je peux obtenir le même résultat avec une foreach:

 List ChildClassList = new List(); foreach( var item in BaseClassList ) { ChildClassList.Add( item as ChildClass ); } 

Mais y a-t-il une manière plus ordonnée de faire cela? Note – ceci est fait sur la plate-forme WP7.

Vous pouvez le faire si vous êtes vraiment sûr que tous les objects sont castables:

 ChildClassList = BaseClassList.Cast().ToList(); 

Votre code actuel ajoute la valeur null si un élément BaseClass ne peut pas être converti en ChildClass. Si telle était vraiment votre intention, ce serait équivalent:

 ChildClassList = BaseClassList.Select(x => x as ChildClass).ToList(); 

Mais je préférerais suggérer ceci, ce qui inclut la vérification de type et évitera les éléments qui ne correspondent pas:

 ChildClassList = BaseClassList.OfType().ToList(); 

Ce qui suit est presque équivalent à votre code actuel (la seule chose qui manque, c’est qu’il n’ajoute pas de valeur NULL pour les conversions ayant échoué):

 var childList = baseList.OfType().ToList(); 

Cela ignorera les cas où la liste contient une autre classe dérivée autre que ChildClass .

Vous pouvez aussi utiliser:

 var childList = baseList.Cast().ToList(); 

Mais cela InvalidCastException une InvalidCastException sur les choses qu’il ne peut pas lancer.