私はthisラムダ式についてのチュートリアルに続き、次のコードを作成しました。C#linqラムダここではない
Func<int, bool> isHighNUmber = s => s > 10;
IList<int> intList = new List<int>() { 1, 3,9, 2, 63, 236, 32, 474, 83, 832, 58, 3458, 35, 8, 4 };
Console.WriteLine("All numbers.");
foreach (int x in intList)
{
Console.WriteLine(x);
}
Console.WriteLine("High Numbers");
foreach(int x in intList.Where(isHighNUmber).ToList<int>())
{
Console.WriteLine(x);
}
そして、それが正常に動作しますが、今私は、低い数値を取得するために試してみたかったので、私は上記の構文の
foreach(int x in intList.Where(!isHighNUmber).ToList<int>())
foreach(int x in intList.Where(isHighNUmber == false).ToList<int>())
とバリエーションを試してみましたが、それは仕事を得ることができませんでした。また、私はどこの機能を置き換えるためにWhereNot
foreach(int x in intList.WhereNot(!isHighNUmber).ToList<int>())
のような機能を探しましたが、簡単にisHighNumberの反対を行うには、別のFuncを追加することができ、適切なone.Iを見つけるが、それfuncはあなたが非常に大きい場合、私は想像することができませんでしたそれを完全に書き直したくないでしょう。 whereメソッドのlambda Funcの反対をどうやって得るべきですか?
「実際に呼び出しますか」?このメソッドは、 'Where(IsHighNumber)'を使うときにも呼び出されます。 'Where(x => x.IsHighNumber(x))'のショートカットです。 – HimBromBeere
おそらく明示的に呼び出すisはより良い説明です –
@MiniverCheevyしかし、あなたはそれを呼び出さないでしょう。あなたはボディがそれを呼び出す新しいメソッドを作成しています。 – Servy