c# - tutorial - Limitar el número de resultados que se devuelven en una lista de Linq
update entity framework (3)
Use Take()
, antes de convertir a una lista. De esta forma, EF puede optimizar la consulta que crea y solo devolver los datos que necesita.
Estoy usando Linq / EF4.1 para extraer algunos resultados de una base de datos y me gustaría limitar los resultados a los (X) resultados más recientes. Donde X es un número establecido por el usuario.
¿Hay alguna forma de hacer esto?
Actualmente los estoy devolviendo como una List
si esto ayuda a limitar el conjunto de resultados. Si bien puedo limitar esto mediante un bucle hasta que toco X, supongo que no pasaré los datos adicionales.
Solo en caso de que sea relevante ... Proyecto C # MVC3 que se ejecuta desde una base de datos SQL Server.
Use la función Take
int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)
Suponiendo que listOfItems
es una lista de objetos de su entidad y CreatedDate
es un campo que tiene el valor de fecha de creación (utilizado aquí para hacer el pedido al descender para obtener artículos recientes).
La función Take () devuelve un número específico de elementos contiguos desde el inicio de una secuencia.
results = results.OrderByDescending(x=>x.Date).Take(10);
El OrderByDescending ordenará los elementos por su propiedad de fecha / hora (o la lógica w / e que desea usar para obtener el más reciente) y Take limitará a los primeros x elementos (el primero es el más reciente, gracias al orden).
Editar: para devolver algunas filas que no comienzan en la primera fila, use Skip()
:
results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);