Est-il possible de convertir deux ou plusieurs listes dans une liste unique, en .NET en utilisant c# ?
Par exemple,
Est-il possible de convertir deux ou plusieurs listes dans une liste unique, en .NET en utilisant c# ?
Par exemple,
Vous pouvez utiliser LINQ Concat
et ToList
méthodes:
var allProducts = productCollection1.Concat(productCollection2)
.Concat(productCollection3)
.ToList();
Notez qu'il existe des moyens plus efficaces pour ce faire, la ci-dessus sera essentiellement en boucle sur toutes les entrées, la création d'un dynamiquement la taille du tampon. Comme vous pouvez prédire la taille pour commencer, vous n'avez pas besoin de cette dynamique de dimensionnement... de sorte que vous pourriez utiliser:
var allProducts = new List<Product>(productCollection1.Count +
productCollection2.Count +
productCollection3.Count);
allProducts.AddRange(productCollection1);
allProducts.AddRange(productCollection2);
allProducts.AddRange(productCollection3);
(AddRange
est spécial-étui pour ICollection<T>
d'efficacité.)
Je ne voudrais pas prendre cette approche à moins de vraiment bien.
En supposant que vous voulez une liste contenant tous les produits pour la catégorie spécifiée-Id, vous pouvez traiter votre requête comme une projection suivie d'un aplatissement de l' opération. Il y a une LINQ opérateur qui fait que: SelectMany
.
// implicitly List<Product>
var products = new[] { CategoryId1, CategoryId2, CategoryId3 }
.SelectMany(id => GetAllProducts(id))
.ToList();
En C# 4, vous pouvez raccourcir le SelectMany: .SelectMany(GetAllProducts)
Si vous avez déjà des listes représentant les produits pour chaque Id, puis ce que vous avez besoin est une concaténation, comme d'autres, point.
Jetez un oeil sur List.AddRange pour fusionner des listes
Vous pouvez utiliser la méthode d'extension Concat :
var result = productCollection1
.Concat(productCollection2)
.Concat(productCollection3)
.ToList();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.