Saltar al contenido

Listas en linq C# ejemplos

Las listas de linq C# o vb.net , son una de las estructuras de datos más comunes con las que se trabaja. Una lista es una colección de elementos del mismo tipo, y se puede utilizar para representar cualquier tipo de datos, como números, cadenas, entre otras cosas mas. Usar para esto contamos con los metodos ToArray o ToList en LINQ depende del tipo de colección que necesites.

este articulo te presenta la listas de linq C# las cuales incluyen los arreglos y como deberias utilizarlos

Índice

    Cual debo usar toarray() o tolist() en linq C# ?

    La elección de usar ToArray o ToList en LINQ depende del tipo de colección que necesites. ToList devuelve una lista genérica de tipo List<T>, mientras que ToArray devuelve una matriz de tipo T[]. Ambas operaciones convierten una secuencia en una colección de objetos.

    En general, si necesitas una lista genérica, ToList es la opción más adecuada, ya que te permite agregar o eliminar elementos de la lista. Por otro lado, si necesitas una matriz, por ejemplo para pasar los datos a una API que espera una matriz en lugar de una lista, ToArray es la opción más adecuada.

    Aquí hay algunos factores a tener en cuenta al decidir entre ToArray y ToList:

    • Si necesitas agregar o eliminar elementos de la colección, debes usar ToList, ya que la matriz es inmutable y no se puede modificar después de su creación.
    • Si necesitas acceder a los elementos de la colección mediante índices, debes usar ToArray, ya que las matrices son más eficientes que las listas al acceder a los elementos por índice.
    • Si necesitas iterar sobre los elementos de la colección varias veces, debes usar ToList, ya que las listas son más eficientes que las matrices en este caso.

    Tu elección de usar ToArray en LINQ dependera de tus necesidades específicas y del tipo de colección que necesites. Si necesitas una lista genérica y mutable, utiliza ToList; si necesitas una matriz inmutable o necesitas pasar los datos a una API que espera una matriz, utiliza ToArray.

    Como funciona usar los arreglos de Linq ?

    Supongamos que tienes una lista de objetos y necesitas convertirla en una matriz para pasarla a una API que espera una matriz en lugar de una lista. Puedes hacer esto utilizando el método ToArray después de aplicar la transformación deseada a los elementos de la lista.

    En este ejemplo, supongamos que tienes una lista de cadenas que representan nombres completos y quieres convertirla en una matriz de cadenas que solo contienen el primer nombre de cada persona:

    List<string> nombresCompletos = new List<string>
    {
        "Juan Pérez",
        "María García",
        "Luis Fernández",
        "Ana Torres",
        "Carlos Sánchez"
    };
    
    string[] primerosNombres = nombresCompletos
        .Select(n => n.Split(' ')[0]) // Obtener el primer nombre de cada cadena
        .ToArray(); // Convertir el resultado en una matriz
    
    // La matriz "primerosNombres" ahora contiene ["Juan", "María", "Luis", "Ana", "Carlos"]
    

    En este ejemplo, la lista nombresCompletos contiene una secuencia de cadenas que representan nombres completos. Primero, se utiliza el método Select para obtener solo el primer nombre de cada cadena utilizando el carácter de espacio como separador. Luego, se utiliza ToArray para convertir el resultado de Select en una matriz de cadenas. Finalmente, la variable primerosNombres contiene la nueva matriz que contiene solo el primer nombre de cada persona.

    Es importante tener en cuenta que después de utilizar ToArray, la matriz resultante es inmutable, es decir, no se puede modificar, agregar o eliminar elementos de la matriz después de su creación.

    Como funcionan las listas en linq C#?

    LINQ proporciona varias operaciones para trabajar con listas, como Where, Select o SelectMany, OrderBy, GroupBy, Join, entre otras. Estas operaciones se utilizan para filtrar, ordenar, agrupar y combinar datos en una lista.

    Ejemplos de operaciones de listas en LINQ:

    Where: se utiliza para filtrar elementos de una lista basándose en una condición. Por ejemplo, podemos utilizar Where para seleccionar todos los números pares de una lista de números.

    var numeros = new List<int> { 1, 2, 3, 4, 5 };
    var numerosPares = numeros.Where(n => n % 2 == 0);
    // numerosPares = { 2, 4 }
    

    Select o SelectMany: se utiliza para proyectar cada elemento de una lista en un nuevo tipo. Por ejemplo, podemos utilizar Select para obtener una lista de cadenas que representan los nombres de una lista de objetos Persona.

    var personas = GetPersonas(); // Obtener lista de personas
    var nombres = personas.Select(p => p.Nombre);
    // nombres = { "Juan", "Maria", "Pedro", ... }

    OrderBy: se utiliza para ordenar los elementos de una lista en base a un criterio determinado. Por ejemplo, podemos utilizar OrderBy para ordenar una lista de personas por su edad.

    var personas = GetPersonas(); // Obtener lista de personas
    var personasOrdenadas = personas.OrderBy(p => p.Edad);
    // personasOrdenadas = { Pedro, Juan, Maria, ... }

    GroupBy: se utiliza para agrupar elementos de una lista en base a un criterio determinado. Por ejemplo, podemos utilizar GroupBy para agrupar una lista de personas por su ciudad de residencia.

    var personas = GetPersonas(); // Obtener lista de personas
    var personasAgrupadasPorCiudad = personas.GroupBy(p => p.Ciudad);
    /*
      personasAgrupadasPorCiudad = {
        "Bogotá": { Juan, Pedro, ... },
        "Medellín": { Maria, ... },
        ...
      }
    */

    Join: se utiliza para combinar dos listas en base a una clave común. Por ejemplo, podemos utilizar Join para combinar una lista de Pedidos con una lista de Clientes en base a su identificador de cliente.

    var clientes = GetClientes(); // Obtener lista de clientes
    var pedidos = GetPedidos(); // Obtener lista de pedidos
    var pedidosConClientes = pedidos.Join(clientes, p => p.IdCliente, c => c.Id, (p, c) => new { Pedido = p, Cliente = c });
    /*
      pedidosConClientes = {
        { Pedido = p1, Cliente = c1 },
        { Pedido = p2, Cliente = c2 },
        ...
      }
    */
    CRUD base de datos

    ¿Cómo seleccionar elementos de listas anidadas con linq?

    Para seleccionar elementos de listas anidadas, podemos utilizar la cláusula SelectMany Esta se utiliza para proyectar cada elemento de una secuencia a una secuencia y luego aplanar las secuencias resultantes en una sola secuencia.

    Pasos para la seleccion

    Supongamos que tenemos una lista anidada de objetos Persona, donde cada Persona tiene una lista de Mascotas.

    Podemos seleccionar todas las mascotas de todas las personas de la siguiente manera:

    List<Persona> personas = GetPersonas(); // Obtener lista de personas
    
    var mascotas = personas.SelectMany(p => p.Mascotas); // Seleccionar todas las mascotas de todas las personas
    

    En este ejemplo, utilizamos la cláusula SelectMany para proyectar cada elemento de la lista personas (cada persona) en una lista de Mascotas. la cláusula SelectMany aplanará todas las listas de Mascotas resultantes en una sola secuencia de Mascotas.

    También podemos aplicar filtros y otras operaciones de transformación a las listas anidadas utilizando LINQ. Por ejemplo,

    Si queremos seleccionar todas las mascotas cuyo nombre comienza con la letra «M», podemos hacer lo siguiente:

    var mascotasConM = personas.SelectMany(p => p.Mascotas.Where(m => m.Nombre.StartsWith("M")));
    

    En este ejemplo, aplicamos un filtro a la lista de Mascotas de cada Persona utilizando el método Where. Luego, utilizamos la cláusula SelectMany para aplanar todas las listas de Mascotas resultantes en una sola secuencia de Mascotas. todos estos ejemplos usan las expresiones lambdas para hacer el codigo mas legible al programar.

    En conclusion

    Una lista es una colección de elementos del mismo tipo los cuales pueden filtrados, agrupados , ordenados, Para iniciar con nustros CRUD de aplicaciones en C# con linq necesitamos entender este fundamento de la programación de elemento con linq.

    Hasta la proxima gracias :D!!