LINQ-obtenir tous les éléments d'une liste à l'intérieur d'une liste?
je suis en train de me frayer un chemin à travers la courbe D'apprentissage qui est LINQ et je pourrais vraiment avoir besoin d'aide. Je ne sais pas si ce que je veux est possible, mais si je devais parier, j'en suis sûr.
j'ai actuellement une liste d'objets appelés _tables et chacun de ces objets contient une autre liste d'objets exposés à travers la propriété, "Index". Essentiellement, j'aimerais terminer avec une Liste qui contient tous les Index de tous les _tables.
Voici ce que j'ai pour l'instant:
var indexes = from TableInfo tab
in _tables
where tab.Indexes.Count > 0
select tab.Indexes;
malheureusement, cela semble me donner une autre liste de listes, mais seulement lorsque la liste des index contient plus d'une valeur... Y a-t-il un moyen d'assembler toutes ces listes sans boucles?
4 réponses
vous voulez utiliser le SelectMany
méthode d'extension.
_tables.SelectMany(t => t.Indexes)
en plus de la réponse de tbischel, la version d'expression de requête de ce que vous cherchez est ci-dessous.
var indexes = from TableInfo tab in _tables
from index in tab.Indexes
select index;
vous n'avez pas besoin de la clause where et vous ne devriez pas non plus avoir besoin de lui dire quel onglet est
Et vous aurez besoin d'utiliser SelectMany
var indexes = (from tab in _tables).SelectMany(t => t.Indexes)
Ou vous pouvez le faire comme ceci
var indexes = from tab in _tables
from t in tab.Indexes
select t;
cela devrait être un peu plus familier syntaz