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:

  1. si hay 2 entradas, agregue 3 entradas vacías
  2. si hay 0 entradas, agregue 5 entradas vacías
  3. 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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top