Ho una lista (dove T è una classe personalizzata e la classe ha alcune proprietà). Vorrei sapere come cambiare uno o più valori inide di esso utilizzando Lambda Expressions, quindi il risultato sarà lo stesso del ciclo foreach muggito:Modifica un valore all'interno dell'elenco <T>
NOTA: la lista contiene più elementi all'interno (più righe)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
E questa la query LINQ (usando le espressioni lambda), ma la sua non è la stessa come il ciclo foreach superiore, restituisce solo 1 articolo (una riga) dalla lista!
Quello che voglio è, che restituisce tutti gli elementi (tutti i file) e chnages solo quella appropriata (gli elementi specificati nel metodo estensione WHERE (s)
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
. NOTA: questi 2 esempio non sono la stessa cosa! Ripeto, il linq restituisce solo 1 elemento (una riga), e questo è qualcosa che non voglio, ho bisogno anche di tutti gli elementi della lista (come il ciclo foreach, solo le modifiche, ma non lo fa rimuovere qualsiasi articolo)
* Perché * si desidera utilizzare le espressioni lambda? Il codice 'foreach' funziona bene ed è semplice. LINQ serve * per interrogare * i dati, non per mutarli. –
Dove, per definizione, restituisce solo i record corrispondenti. Fondamentalmente: non è quello che vuoi - basta usare foreach –
Ciao Jon, so che il ciclo foreach se la pastella e più veloce, ma mi piacerebbe imparare, questo è tutto. Per alcuni "piccoli" codici andrà bene. Ma il punto è soprattutto la lettura. –