Sintaxis para inicializar una lista < T > con la lista existente < T > objetos
-
05-07-2019 - |
Pregunta
¿es posible inicializar una lista con otras listas en C #? Digamos que tengo esto en las listas:
List<int> set1 = new List<int>() {1, 2, 3};
List<int> set2 = new List<int>() {4, 5, 6};
Lo que me gustaría tener es una abreviatura de este código:
List<int> fullSet = new List<int>();
fullSet.AddRange(set1);
fullSet.AddRange(set2);
Gracias de antemano!
Solución
Para permitir elementos duplicados (como en su ejemplo):
List<int> fullSet = set1.Concat(set2).ToList();
Esto se puede generalizar para más listas, es decir, ... Concat (set3) .Concat (set4)
. Si desea eliminar elementos duplicados (aquellos elementos que aparecen en ambas listas):
List<int> fullSet = set1.Union(set2).ToList();
Otros consejos
static void Main(string[] args)
{
List<int> set1 = new List<int>() { 1, 2, 3 };
List<int> set2 = new List<int>() { 4, 5, 6 };
List<int> set3 = new List<int>(Combine(set1, set2));
}
private static IEnumerable<T> Combine<T>(IEnumerable<T> list1, IEnumerable<T> list2)
{
foreach (var item in list1)
{
yield return item;
}
foreach (var item in list2)
{
yield return item;
}
}
var fullSet = set1.Union(set2); // returns IEnumerable<int>
Si desea Listar < int > en lugar de IEnumerable < int > podrías hacer:
List<int> fullSet = new List<int>(set1.Union(set2));
List<int> fullSet = new List<int>(set1.Union(set2));
puede funcionar.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow