C-Sharp - Linq
Programación

C# LINQ metodos que siempre uso como .NET Developer

Hoy mostraré los metodos LINQ que siempre uso como .NET Developer

  • Introducción
  • Demo
  • FirstOrDefault
  • WHERE and SELECT
  • OrderBy and OrderByDecending
  • MIN
  • MAX

Introducción

Si eres desarrollador back-end NET, entonces ya sabes que el lenguaje principal utilizado es C# y una de las poderosas herramientas que C# ofrece desde el principio es LINQ, la biblioteca nos ofrece contenedores y métodos de manipulación de datos que nos facilitan la vida como desarrolladores. Especialmente cuando estamos tratando de filtrar datos y utilizar para nuestras necesidades.

En esta demostración, te mostraré los principales métodos que utilizo en mi trabajo a diario como desarrollador back-end.

Más sobre la historia de LINQ aquí.

Demo

Para los fines de esta demostración, usaré una aplicación de consola C#, donde tengo una clase Person (detalles generales como propiedades) y un repositorio de Person que tiene métodos para recuperar los datos de las personas en función a las necesidades

Person class

    public class Person
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }

        public int Age { get; set; }

        public GenderEnum Gender { get; set; }

        public override string ToString()
        {
            return $"Name: {FirstName} {LastName}, Age: {Age}, Gender: {Gender}";
        }
    }

    public enum GenderEnum
    {
        FEMALE = 1,
        MALE = 2
    };

Person Repository

 public class PesonRepository
 {
     private readonly List<Person> PersonContainer;
 }

FirstOrDefault

FirstOrDefault se usa para retornar el primer elemento en consecuencia la condifición especificada (function predicate)

        /// <summary>
        /// Demostración de FirstOrDefault
        /// </summary>
        public Person FindPersonByname(string nameToSearch)
        {
            return PersonContainer.FirstOrDefault(p => p.FirstName.Contains(nameToSearch) || p.FirstName.Contains(nameToSearch));
        }

WHERE y SELECT

Por lo general, los encadeno, filtro mi colección especificando DONDE y SELECCIONO lo que necesito del objeto y lo extraigo.

        /// <summary>
        /// Demonstrating  WHERE and SELECT
        /// </summary>
        public List<Person> SearchPeopleByName(string nameToSearch)
        {
            return PersonContainer
                .Where(p => p.FirstName.Contains(nameToSearch) || p.LastName.Contains(nameToSearch))
                .Select(p => p).ToList();
        }

OrderBy y OrderByDecending

Los uso respectivamente cada vez que necesito ordenar mis objetos complejos en función de ciertas propiedades.


        /// <summary>
        /// Demonstrating OrderBy and OrderByDecending
        /// </summary>
        public List<Person> GetPersonsOrderedByAge(bool isDesecending)
        {
            var personsOrdered = PersonContainer.OrderBy(p => p.Age).ToList();

            if (isDesecending) return personsOrdered.OrderByDescending(p => p.Age).ToList();

            return personsOrdered;
        }

MIN and MAX

Son los que menos uso en mis tareas diarias, pero me ayudan a identificar cuál es el valor más alto/más bajo en la propiedad de un objeto para realizar más consultas sobre la colección


        /// <summary>
        ///  Demonstrating Min
        /// </summary>
        public int GetYoungestPersonAge()
        {
            return PersonContainer.Min(p => p.Age);
        }

        /// <summary>
        /// Demonstrating Max
        /// </summary>
        public int GetOldestPersonAge()
        {
            return PersonContainer.Max(p => p.Age);
        }

Desarrollador, Consultor, Arquitecto de Software, con mas de 5 años de experiencia. Interesado en la innovación y preocupado por la calidad del servicio.