我有以下 IEnumerable LINQ 查询:
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 处找到了正确的结果,所以我让它停在那里。在这种情况下,数量就足够了。
但它只是一个硬编码的“随机”数字。如果您查看代码,您会发现只要 wherep == sumofPowers.Sum()
为真,您就不需要再运行循环了。
我知道yield
在其他情况下可以做到这一点并break
在正常循环中工作 - 那么在这种情况下你可以做些什么吗?