linq to list<object>, et obtenir les valeurs par ligne
pour un test, j'ai besoin de faire une liste avec des valeurs de paramètre. Cette liste n'est pas par définition pré-définie comme un type et /ou de ce qui est en elle.
bool[] trueOrFalse = new bool[] { true, false };
int[] para1 = new int[] { 1, 2, 3 };
int[] para2 = new int[] { 5, 6, 7 };
int[] para3 = new int[] { 1, 2, 3 };
int[] para4 = new int[] { 5, 7, 9 };
List<object> test = (from a in trueOrFalse
from b in para1
from c in para2
from d in para3
from e in para4
let f = c - d
where c - d <= 3
select new { a, b, c, d, e, f }).AsEnumerable<object>().ToList();
le résultat est très bien (c'est juste pour un test) et j'obtiens une liste avec toutes les combinaisons de paramètres possibles, que je peux utiliser comme paramètre pour une autre méthode. (J'en ai besoin que d'une liste, parce que, autant que je sache, var test ne peut pas être analysé comme un paramètre à une autre méthode.)
Quand je planent au-dessus de test en mode debug, je vois chaque ligne et chaque ligne contient un f comme un champ distinct.
Mais comment puis-je soustraire les valeurs?
disons que je veux utiliser une boucle foreach sur la liste.
comment puis-je définir int myA = un etc?
en ce qui concerne,
Matthijs
List<object>
est juste une mauvaise solutionVous avez peut-être raison. Va le garder en tête pour des problèmes similaires à l'avenir.
OriginalL'auteur user369122 | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous êtes explicitement retrait type d'informations en appelant
AsEnumerable<object>
. Juste se débarrasser de cela, et d'utiliservar
de la variable:Alors vous pouvez faire:
Maintenant, j'avais déjà raté le "qui je peux utiliser comme paramètre pour une autre méthode". (Vous pouvez toujours utiliser une liste - mais c'est une liste d'un type anonyme.) En utilisant les types anonymes, vous avez vraiment de fournir le résultat d'une méthode dans un typage fort.
Options:
Si vous pouvez nous en dire plus sur ce que vous faites dans l'autre méthode, qui aiderait vraiment. Si la méthode peut être faite générique, vous pouvez toujours être en mesure d'utiliser les types anonymes.
J'ai manqué. Modifier. (Plus Tard...).
résolu avec typage dynamique. Merci!
OriginalL'auteur Jon Skeet
Si vous êtes le décapage de tous les temps de compilation des informations de type et ne peut pas utiliser les objets Dynamiques, alors vous finirez par avoir à utiliser la réflexion.
OriginalL'auteur Bob Vale
vous pouvez utiliser la réflexion:
vous pouvez aussi donner des noms à vos champs comme ceci:
et ensuite utiliser:
OriginalL'auteur kleinohad