Docs Menu
Docs Home
/ /
/ / /

Consulta de datos

Entity Framework Core le permite trabajar con datos en su aplicación sin ejecutar comandos de base de datos explícitamente. Para consultar sus datos, utilice la sintaxis de consulta integrada en el lenguaje (LINQ). LINQ permite escribir consultas fuertemente tipadas mediante palabras clave y operadores específicos de C#. Al ejecutar la aplicación, el proveedor de EF Core traduce automáticamente las consultas LINQ y las ejecuta en la base de datos mediante la API de consultas de MongoDB.

En esta guía puede ver ejemplos de operaciones de consulta comunes en una aplicación configurada para usar EF Core Provider.

Tip

Para aprender a configurar una aplicación para utilizar el proveedor EF Core, consulte Configurar el proveedor central de EF.

Encuentre una sola entidad utilizando el FirstOrDefault() método, o busque múltiples entidades utilizando el método Where().

El método FirstOrDefault() devuelve la primera entidad que encuentra en su colección que coincide con los criterios de búsqueda y devuelve null si no se encuentran entidades coincidentes.

El siguiente código utiliza el método FirstOrDefault() para encontrar un planeta con el campo name de "Mercurio" de un DBSet llamado Planets e imprime el nombre del planeta en la consola:

var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury");
Console.WriteLine(planet.name);

Puede utilizar el método Where() para recuperar varias entidades de sus colecciones. Where() devuelve todas las entidades que coinciden con los criterios de búsqueda.

El siguiente código usa el método Where() para encontrar todos los planetas que tengan el campo hasRings establecido en true e imprime los nombres de los planetas en la consola.

var planets = db.Planets.Where(p => p.hasRings);
foreach (var p in planets)
{
Console.WriteLine(p.name);
}

Utilice el método OrderBy() para especificar un orden en el que devolver las entidades de una consulta. OrderBy() ordena los elementos en orden ascendente según un criterio de clasificación especificado.

El siguiente código utiliza el método OrderBy() para buscar todos los planetas y ordenarlos según el valor del campo orderFromSun en orden ascendente. Luego, imprime los resultados en la consola.

var planetList = db.Planets.OrderBy(p => p.orderFromSun);
foreach (var p in planetList)
{
Console.WriteLine(p.name);
}
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

Tip

Ordenar en orden descendente

Puede ordenar los resultados de una consulta en orden descendente utilizando el método OrderByDescending().

Puede realizar una ordenación secundaria en su consulta mediante el método ThenBy(). El método ThenBy() ordena los resultados del método OrderBy() en orden ascendente según un criterio de ordenación específico. El método ThenBy() debe estar encadenado al método OrderBy().

Tip

Orden secundario en orden descendente

Puede realizar una clasificación secundaria en orden descendente utilizando el método ThenByDescending().

El siguiente código utiliza los métodos OrderBy() y ThenBy() para encontrar todos los planetas y ordenarlos por el campo hasRings(), con una ordenación secundaria en el campo name.

var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name);
foreach (var p in planetList)
{
Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name);
}
Has rings: False, Name: Earth
Has rings: False, Name: Mars
Has rings: False, Name: Mercury
Has rings: False, Name: Venus
Has rings: True, Name: Jupiter
Has rings: True, Name: Neptune
Has rings: True, Name: Saturn
Has rings: True, Name: Uranus

Tip

Al ordenar campos con un valor booleano, las entidades con un valor de campo de false se muestran antes que aquellas con un valor de true.

El proveedor principal de EF admite los siguientes métodos de agregación escalar:

  • Count(): Devuelve el número de elementos de una colección o el número de documentos que coinciden con un predicado

  • LongCount(): Devuelve el número de elementos en una colección como long o el número de documentos que coinciden con un predicado

  • Any(): Devuelve true si algún elemento de una colección coincide con el predicado

  • Max(): Devuelve el valor máximo de un campo especificado en una colección

  • Min(): Devuelve el valor mínimo de un campo especificado en una colección

  • Sum(): Devuelve la suma de los valores de un campo especificado en una colección

  • Average(): Devuelve el promedio de los valores de un campo especificado en una colección

Las siguientes secciones muestran ejemplos de cada uno de los métodos anteriores.

El siguiente ejemplo utiliza el método Count() para contar la cantidad de elementos en la colección Planets:

var planetCount = db.Planets.Count();
Console.WriteLine("Planet Count: " + planetCount);

El siguiente ejemplo utiliza el método Count() para contar la cantidad de elementos en la colección Planets que tienen un campo hasRings establecido en true:

var planetCountWithRings = db.Planets.Count(p => p.hasRings);
Console.WriteLine("Planet Count with Rings: " + planetCountWithRings);

El siguiente ejemplo utiliza el método LongCount() para contar la cantidad de elementos en la colección Planets y devuelve el resultado como long:

var planetCountLong = db.Planets.LongCount();
Console.WriteLine("Long Planet Count: " + longCount);

El siguiente ejemplo utiliza el método LongCount() para contar la cantidad de elementos en la colección Planets que tienen un campo hasRings establecido en true y devuelve el resultado como long:

var planetCountLongWithRings = db.Planets.LongCount(p => p.hasRings);
Console.WriteLine("Long Planet Count with Rings: " + planetCountLongWithRings);

El siguiente ejemplo utiliza el método Any() para verificar si algún elemento de la colección Planets tiene un campo hasRings establecido en true:

var results = db.Planets.Any(p => p.hasRings);
foreach (var p in results)
{
Console.WriteLine("Planet with Rings: " + p.name);
}

El siguiente ejemplo utiliza el método Max() para encontrar el valor máximo del campo orderFromSun en la colección Planets:

var furthestPlanet = db.Planets.Max(p => p.orderFromSun);
Console.WriteLine("Furthest Planet: " + furthestPlanet.name);

El siguiente ejemplo utiliza el método Min() para encontrar el valor mínimo del campo orderFromSun en la colección Planets:

var closestPlanet = db.Planets.Min(p => p.OrderFromSun);
Console.WriteLine("Closest Planet: " + closestPlanet.Name);

El siguiente ejemplo utiliza el método Sum() para encontrar la suma del campo mass en la colección Planets:

var totalMass = db.Planets.Sum(p => p.mass);
Console.WriteLine("Total Mass of Planets: " + totalMass);

El siguiente ejemplo utiliza el método Average() para encontrar el valor promedio del campo mass en la colección Planets:

var averageMass = db.Planets.Average(p => p.mass);
Console.WriteLine("Average Mass of Planets: " + averageMass);

Para obtener más información sobre las agregaciones en MongoDB, consulte Guía deoperaciones de agregación en el manual del servidor MongoDB.

Para obtener más información sobre los métodos analizados en esta guía, consulte los siguientes enlaces de documentación de la API de .NET:

Volver

Configuración

En esta página