2016-04-06 3 views
-3

Während der folgende Code funktioniert gut Ich frage mich, ob es eine sauberere Möglichkeit, dies mit Lambda-Ausdrücke zu erreichen?Versuchen, besser zu lernen Lambda-Codierung

var counter = 1; 

foreach (var item in model) 
{ 
    item.ID = counter++; 
} 
+5

Linq ist im Grunde nicht für die Aktualisierung, sondern für die Abfrage von Daten konzipiert. Das ist einfach nicht möglich und wird nicht einmal benötigt. Was ist mit diesem schönen Kurzcode? – HimBromBeere

+0

@HimBromBeere Linq! = Lambda – fubo

+1

Siehe folgende Webseite: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng

Antwort

4

Sie könnten einen Inline machen Lambda FürJeden

model.ForEach(x => x.ID = counter++); 

Update/Einschränkung:

  • dies nur funktioniert, wenn model Typ ist List<>
  • bei Werttypen Die Artikel werden nicht aktualisiert - ohne Fehler
+4

Während es technisch korrekt ist, ist es erwähnenswert, dass dies in vielen Fällen als " schlechte Praxis '/' Code riecht 'etc ... – Fabjan

+2

@Fubo, warum hast du angenommen, dass das Modell eine 'List' ist? – ASh

+0

@ASh - du hast Recht, sonst wird es nicht funktionieren oder muss 'model.ToList() sein. ForEach()' aber wie Fabjan bereits darauf hingewiesen - das war eher eine technische Frage über Lambda-Ausdrücke – fubo

Verwandte Themen