私はいくつかのリストを持っています(ここで、Tはカスタムクラスであり、クラスにはいくつかのプロパティがあります)。Lambda式を使用してその中の1つ以上の値を変更する方法を知りたいので、結果は次のforeachループと同じになります。
注:リストには、内部に複数のアイテムが含まれています(複数の行)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
これはlinqクエリ(Lambda式を使用)ですが、上位のforeachループと同じではなく、リストから1つのアイテム(1行)のみを返します。
私が欲しいのは、それがすべてのアイテム(すべての行)を返し、適切なもの(WHERE拡張メソッドで指定されたアイテム)のみを変更することです。
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
注:これら2つの例は同じではありません!繰り返しますが、linqは1つのアイテム(1行)しか返しません。これは不要です。リストからすべてのアイテムも必要です(foreachループのように、変更のみを行いますが、アイテムは削除しません)。 )。