Me gustaría usar Linq para consultar un horario de autobuses en mi proyecto, para que en cualquier momento pueda obtener los próximos 5 horarios de llegada de autobuses. ¿Cómo puedo limitar mi consulta a los primeros 5 resultados?
En términos más generales, ¿cómo puedo tomar una porción de una lista en C #? (En Python, usaría mylist[:5]para obtener los primeros 5 elementos).

.Take(n)devuelve un TakeIterator; no devuelve una lista connelementos (suponiendo que hay muchos disponibles). Use.ToArray()o.ToList()en el resultado deTakepara obtener una matriz o lista concreta.En caso de que alguien esté interesado (incluso si la pregunta no solicita esta versión), en C # 2 sería: (He editado la respuesta, siguiendo algunas sugerencias)
fuente
Skip+Takees tan inteligente o si enumera los elementos omitidos. Y no necesito saberlo: solo uso GetRange (cuando se me da una Lista). Solo asegúrese de darse cuenta de que el segundo parámetro es el recuento (en lugar del último índice )..Take(n)es que no tiene que preocuparse si hay menos denelementos en la secuencia en la que funciona. El problemaList<T>.GetRange(0, count)es que tienes que preocuparte ... obtendrás unArgumentExceptionsi no haycountelementos.Como
paginationpuede usar a continuación la fórmula para tomarslice of list or elements:Ejemplo 1: primeros cinco artículos
Ejemplo 2: segundos cinco artículos
Ejemplo 3: terceros cinco elementos
fuente
Para tomar los primeros 5 elementos, use una expresión como esta:
var firstFiveArrivals = myList.Where([EXPRESSION]).Take(5);o
var firstFiveArrivals = myList.Where([EXPRESSION]).Take(5).OrderBy([ORDER EXPR]);Será más rápido que la variante orderBy, porque el motor LINQ no escaneará toda la lista debido a la ejecución retrasada, y no ordenará toda la matriz.
fuente