9

私はリストを持っています、私; LinQ/LAMBDAで特定の基準に基づいて選択したいだけです

私のコードは

Lists.ForEach(x => x.IsAnimal == false { /* Do Something */ } );

この部分で「割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみをステートメントとして使用できます」というエラーが表示されます x.IsAnimal == false

forループでこれを簡単に達成できることは知っていますが、LinQ/LAMBDAを使用してさらに学びたいです

4

7 に答える 7

20

ForEach を使用する前にWhereToListを使用するだけです

Lists.Where(x => !x.IsAnimal).ToList().ForEach(...)
于 2013-01-03T12:58:35.533 に答える
18

構造を持つことができないため、それは機能していませんfalse{}

Lists.ForEach(x => { 
                  if(x.IsAnimal){
                       //Do Something
                  }
             } );
于 2013-01-03T13:00:55.127 に答える
6

ラムダ式の構文を読んでください。ラムダ式はメソッドを表します。の前の部分=>はパラメーターのリストであり、その後の部分は結果が返される単一の式、またはメソッド本体のいずれかです。

そのメソッド本体内に制限を追加できます。

Lists.ForEach(x => {
                  if (!x.IsAnimal) {
                      // do something
                  }
              });
于 2013-01-03T12:58:51.490 に答える
3

次のようになります。

things.Where(x => !x.IsAnimal).ToList().ForEach(x => { // do something });

ForEach を使用するために新しいリストを作成しなければならないことに不満を持っている人がいるのがわかります。Select で同じことを行い、IEnumerable に固執することができます。

things.Where(x => !x.IsAnimal).Select(x => 
{
    // do something with it
    return x; // or transform into something else.
});
于 2013-01-03T12:59:28.357 に答える