Question

Si vous aviez une variable IQueryable remplie.

Comment ajouteriez-vous une nouvelle entrée vide à la fin de cette liste?

Voici ce que je dois faire:

  1. s'il y a 2 entrées, ajoutez 3 entrées vides
  2. s'il y a 0 entrée, ajoutez 5 entrées vides
  3. s'il y a 5 entrées, ajoutez 5 entrées vides

Vous pouvez maintenant voir le modèle et le remplacer par un répéteur dans asp.net .

Dois-je simplement créer une liste générique (. toList ()) et utiliser la fonctionnalité ajouter ou existe-t-il un meilleur moyen de le faire?

Était-ce utile?

La solution

Eh bien, si vous voulez le convertir en IEnumerable<T>, vous pouvez utiliser

.
query.Concat(Enumerable.Repeat(new SomeRow(), 5)
     .Take(5);

Notez que cela ajoutera la même ligne supplémentaire 5 fois (puis réduira le total à 5). Cela ne fonctionnera pas si vous devez ensuite pouvoir modifier les lignes. pour ce faire, vous voudriez quelque chose comme:

query.AsEnumerable()
     .Concat(Enumerable.Range(1, 5).
                       .Select(ignored => new SomeRow())
     .Take(5);

(Je ne pense pas qu'il existe un moyen plus simple d'appeler la même fonction n mais je peux me tromper.)

EDIT: j'ai ajouté l'appel à AsEnumerable() sur la base de commentaires. Appeler AsEnumerable signifie & "J'ai terminé le bit SQL; faire le reste en cours de traitement. & ";

Autres conseils

Eh bien, je le ferais et utiliserais la propriété Length pour déterminer ce qu'il faut faire ensuite.

Mais si vous ne voulez pas faire cela, vous pouvez créer une Union sur un IEnumerable avec cinq entrées vides, puis effectuer un Take (5) sur le résultat. Semble un peu redondant et pas plus court, cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top