Biorąc pod uwagę klasę:
class foo
{
public string a = "";
public int b = 0;
}
Następnie ich ogólna lista:
var list = new List<foo>(new []{new foo(), new foo()});
Jeśli mam przypisać wiele właściwości w poniższej List<T>
ForEach()
metodzie, czy istnieje prostszy sposób, aby to zrobić poniżej? Mam nadzieję, że jestem trochę gruba.
// one property - easy peasy
list.ForEach(lambda => lambda.a="hello!");
// multiple properties - hmm
list.ForEach(lambda => new Action(delegate() { lambda.a = "hello!"; lambda.b = 99;}).Invoke());
Edycja: Myśl ForEach()
była metodą rozszerzenia LINQ, podczas gdy w rzeczywistości jest częścią List<T>
oops!
List<T>
a nie LINQ. Możesz także utworzyć swoją listę zvar list = new List<foo>() { new foo(), new foo() };
Odpowiedzi:
Wszystko, co musisz zrobić, to wprowadzić kilka nawiasów, aby Twoja anonimowa metoda obsługiwała wiele wierszy:
źródło
Metoda anonimowa to twój przyjaciel
MSDN:
źródło
Staje się
Oczywiście możesz je również przypisać podczas tworzenia listy, na przykład:
źródło
źródło
Szczerze mówiąc, naprawdę nie ma potrzeby używania List.ForEach tutaj:
źródło