//var sample= new { bottom=2, top=5,count=4};
var sample= new [] {2,3,4,5,6};
var q = from x in new int[]{0} //force desired behavior
from i in sample
from j in sample
select Math.Pow(i,j);
q.Distinct().Count().Dump();
sample = new[]{2,3,4,5};
//q = from i in Enumerable.Range(sample.bottom, sample.top-sample.bottom+1)
// from j in Enumerable.Range(sample.bottom, sample.top-sample.bottom+1)
// select checked(System.Numerics.BigInteger.Pow((BigInteger)i,j));
q.Distinct().Count().Dump();
from x line
が存在しない場合、または変数のリセットが行われていない場合、2 番目の回答は毎回正しくありませq
ん (ここではコメントアウトされています)。
元のサンプルは匿名変数でしたが、配列もそれを行いました。
var sample = new { bottom =2, top=5};
ループで定義されたこのScope of Linq Expressions に関連していますか - 問題: ループ変数を閉じていますか?
上部に 1 項目の配列を配置すると、クロージャが修正されるのはなぜですか?