similaires à la réponse de dbaseman (et commentaire de AKX) J'utilise Cast
:
IEnumerable<MyClass> vats = here.All().Cast<MyClass>();
Vous aurez besoin d'une directive using
pour LINQ si:
using System.Linq;
en haut de votre fichier. Il semble que vous ne l'ayez pas obtenu si la méthode Select
n'est pas reconnue. Notez que cela suppose que chaque valeur vraiment est une référence MyClass
.
EDIT: Si vous voulez être en mesure d'accéder aux valeurs par index, je vous recommande d'utiliser ToList
:
List<MyClass> vats = here.All().Cast<MyClass>().ToList();
Alors que ToArray
fonctionnerait aussi, je suis personnellement en faveur des listes sur les tableaux dans la plupart des cas, comme ils sont plutôt plus flexibles.
EDIT: Il semble que vos résultats soient réellement remplis de ExpandoObject
. Vous devrez créer une nouvelle instance de MyClass
à partir de chaque élément, par ex.
List<MyClass> vats = here.All()
.Select(item => new MyClass(item.Name, item.Value))
.ToList();
ou peut-être:
List<MyClass> vats = here.All()
.Select(item => new MyClass {
Name = item.Name,
Value = item.Value,
})
.ToList();
C'est juste un exemple, que je ne serais pas attendre à travailler tout de suite - nous ne pouvons pas faire mieux que nous ne savons rien sur la façon dont Vos résultats sont en train d'être retournés.
On dirait que vous êtes dans la tête ici, j'ai peur.
Comment tout() est implémenté? – Tigran
@Tigran La voici. Regardez le fichier Massive.cs. https://github.com/robconery/massive –
Une raison pour laquelle vous ne pouvez pas le garder "dynamique" dans votre code? –