¿Cómo agregar una fila vacía en un IQueryable?
-
07-07-2019 - |
Pregunta
Si tuviera una variable IQueryable completada.
¿Cómo agregaría una nueva entrada vacía al final de esa lista?
Esto es lo que tengo que hacer:
- si hay 2 entradas, agregue 3 entradas vacías
- si hay 0 entradas, agregue 5 entradas vacías
- si hay 5 entradas, agregue 5 entradas vacías
Ahora puede ver el patrón y es para un repetidor en asp.net .
¿Debo simplemente crear una lista genérica (.toList ()) y usar la funcionalidad agregar o hay alguna forma mejor de hacerlo?
Solución
Bueno, si está contento de convertirlo a IEnumerable<T>
puede usar
query.Concat(Enumerable.Repeat(new SomeRow(), 5)
.Take(5);
Tenga en cuenta que eso agregará la misma fila adicional 5 veces (y luego reducirá el total a 5). Eso no funcionará si necesita poder editar las filas; para hacer eso, querrías algo como:
query.AsEnumerable()
.Concat(Enumerable.Range(1, 5).
.Select(ignored => new SomeRow())
.Take(5);
(No creo hay una forma más simple de llamar a la misma función n
veces, pero podría estar equivocado)
EDITAR: agregué la llamada a AsEnumerable()
en base a los comentarios. Básicamente, llamar a AsEnumerable
significa & Quot; He terminado el bit de SQL; haga el resto en proceso. "
Otros consejos
Bueno, lo incluiría en la Lista y usaría la propiedad Longitud para determinar qué hacer a continuación.
Pero, si desea no hacer eso, puede hacer una Unión en un IEnumerable con cinco entradas vacías y luego hacer una Toma (5) sobre el resultado. Parece redundante y no más corto, aunque.