Frage

Wenn Sie eine gefüllte IQueryable Variable.

Wie würden Sie am Ende dieser Liste einen neuen leeren Eintrag hinzufügen?

Hier ist was ich tun muss:

  1. Wenn es 2 Einträge gibt, fügen Sie 3 leere Einträge hinzu
  2. Wenn es 0 Eintrag gibt, fügen Sie 5 leere Eintrag hinzu
  3. Wenn es 5 Einstieg gibt, fügen Sie 5 leere Einträge hinzu

Sie können jetzt das Muster sehen und es ist für a Verstärker in ASP.NET.

Soll ich einfach eine erstellen Generische Liste(tolist ()) und verwenden Sie die hinzufügen Funktionalität oder gibt es einen besseren Weg, dies zu tun?

War es hilfreich?

Lösung

Nun, wenn Sie es gerne in konvertieren IEnumerable<T> Sie können verwenden

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

Beachten Sie, dass das das hinzufügt gleich Zusätzliche Reihe 5 mal (und dann die Gesamtsumme auf 5 reduzieren). Das funktioniert nicht, wenn Sie in der Lage sind, die Zeilen zu bearbeiten. Um das zu tun, möchten Sie so etwas wie:

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

(Ich tu nicht denken Es gibt eine einfachere Art, dieselbe Funktion aufzurufen n Zeiten, aber ich könnte mich irren.)

Bearbeiten: Ich habe den Anruf hinzugefügt zu hinzugefügt AsEnumerable() auf der Grundlage von Kommentaren. Grundsätzlich anrufen AsEnumerable bedeutet "Ich habe das SQL-Bit beendet; mach den Rest in Process."

Andere Tipps

Nun, ich würde es tolistisch und die Länge verwenden, um zu bestimmen, was als nächstes zu tun ist.

Wenn Sie dies jedoch nicht tun möchten, können Sie mit fünf leeren Einträgen eine Gewerkschaft auf einem iEnumerable machen und dann (5) über das Ergebnis einnehmen. Scheint irgendwie überflüssig und nicht kürzer, tho.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top