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);
}