次のIEnumerableLINQクエリがあります。
var query = from p in Enumerable.Range(2, 1000000)
let sumofPowers = from ch in p.ToString()
let sumOfPowers = Math.Pow(Convert.ToDouble(ch.ToString()), 5)
select sumOfPowers
where p == sumofPowers.Sum()
select p;
それはそれらの桁の五乗の合計として書くことができるすべての数の合計を見つけます。プロジェクトオイラー問題30です
そのままで問題なく動作します。私はそれがニッチであることを知っています、しかし範囲は私を悩ませます。基本的には1,000,000で正しい結果が得られたと推測しているので、そこで停止させます。このシナリオでは、数は十分でした。
ただし、これはハードコードされた「乱数」にすぎません。コードを見ると、どこp == sumofPowers.Sum()
が真であるかすぐに、ループを実際に実行する必要がなくなっていることがわかります。
私はyield
他の状況でそれを行うことができbreak
、通常のループで動作することを知っています-それで、この状況であなたができることはありますか?