私はいくつかのリストを持っています(Tはカスタムクラスで、クラスにはいくつかのプロパティがあります)。 ラムダ式を使用してその中の1つ以上の値を変更する方法を知りたいので、結果はforeachループと同じになります。リスト内のいくつかの値を変更する<T>
注:リストには複数の項目が含まれています。
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
そして、このLINQクエリ(ラムダ式を使用して)が、上部foreachループとしての同じではないが、それだけで、リストから1つのアイテム(一列)を返します!
私が欲しいのは、それはすべての項目(すべての行)を返し、ONLY適切なもの(WHERE拡張子の方法(複数可)で指定した項目をchnagesこと、である
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
注:これらの2例私は繰り返しますが、linqは1つの項目(1行)しか返しません。これは私が望んでいないものです。また、foreachループのようにリストからすべての項目を必要とします。任意のアイテムを削除してください)
*なぜ*ラムダ式を使用しますか? 'foreach'コードはうまく動作し、シンプルです。 LINQは*データを照会するものであり、変更するものではありません。 –
定義上、一致するレコードのみを返します。基本的には:それはあなたが望むものではありません - ちょうどforeachを使用 –
こんにちはジョン、私は、バッターと速いforeachループを知っていますが、私は、すべてthatsを学ぶことはありません。いくつかの "小さな"コードはうまくいくでしょう。しかし、その点はほとんど噂されている。 –