2016-12-09 13 views
0

linqを使用してリストのプロパティの1つを変更したいが、これは機能しなかった。新しい変数を作成しないでください(これは単純な例です。プロパティ)プロパティのいずれかを変更する方法linq

List<string> aaa = new List<string>() 
     { 
      "a", "b" 
     }; 

     aaa.Where(o => o == "b").Select(o => { 
      o = "c"; 
      return o; 
     }).ToList(); 
+1

LINQメソッドは新しいコレクションを返します.Btw:あなたの選択はちょっと複雑です。単純に 'Select(o =>" c ")'を使用してください。 – HimBromBeere

+1

さらに、オブジェクトのプロパティ(値自体ではない)を変更する必要がある場合は、LINQを使用しないでください。QUERYが入力を変更しない場合、将来のリーダーにとってははるかに明確です。 –

答えて

6

LINQはクエリ言語である、あなたは物事を「頼む」ことができますが、LINQを使用して何かを変更するのは難しいです。そして、あなたはそれをすべきではありません。

通常、列挙子のオブジェクト状態を変更することは悪いことですので、foreachループを使用することを検討してください。あなたではなく、実際の要素よりも、出力を変更したい場合は

、あなたはこれを行うことができます。

var list = aaa.Select(o => o == "b" ? "c" : o).ToList(); 
+1

あなたのものと基本的に(今)同じ答えを削除することを決めました。 +1とにかく:) – HimBromBeere

+0

ありがとう、と申し訳ありません@HimBromBeere –

0

試してください:あなたはaaa` `再びとして、すべてこれを割り当てる必要があり

List<string> aaa = new List<string>() 
     { 
      "a", "b" 
     }; 

aaa = aaa.Select(o => { 
      return o == "b" ? "c" : o 
     }).ToList(); 
関連する問題