objeto new lista initialize inicializar c# collections collection-initializer

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.).