c# - new - Inicializar lista con un solo objeto y otra lista de objetos
new list object c# (2)
Creo que lo mejor que puedes hacer es:
List<MyObject> newList = new[] { object1 }.Concat(listOfObjects).ToList();
Quiero inicializar una lista con un objeto y una lista de objetos en ese orden específico. Actualmente estoy haciendo:
List<MyObject> list = new List<MyObject>();
list.Add(object1); // object1 is type MyObject
list.AddRange(listOfObjects); // listOfObjects is type List<MyObject>
Esperaba consolidar eso en una declaración de inicialización (la sintaxis es incorrecta, por supuesto):
List<MyObject> newList = new List<MyObject>() { object1, listOfObjects };
¿Hay alguna manera de hacer esto concisamente?
Si el orden de los elementos no es importante, puede utilizar:
List<MyObject> newList = new List<MyObject>(listOfObjects) { object1 };
Esto funciona utilizando el constructor List<T>
que acepta un IEnumerable<T>
, luego el inicializador de la colección para agregar los otros elementos. Por ejemplo, lo siguiente:
static void Main()
{
int test = 2;
List<int> test2 = new List<int>() { 3, 4, 5 };
List<int> test3 = new List<int>(test2) { test };
foreach (var t in test3) Console.WriteLine(t);
Console.ReadKey();
}
Imprimirá
3
4
5
2
Sin embargo, tenga en cuenta que el pedido es diferente al original, ya que el artículo individual se agrega en último lugar .
Sin embargo, si el orden es importante, yo personalmente crearía la lista, colocaría su primer objeto en el inicializador y llamaría a AddRange
:
List<MyObject> newList = new List<MyObject> { object1 };
newList.AddRange(listOfObjects);
Esto hace que la intención sea muy clara y evita la construcción de elementos temporales (que se requerirían utilizando Concat de LINQ, etc.).