LINQ 句で整数変数を使用し、where
クエリの実行後に整数変数を変更または初期化すると、LINQ クエリの結果セットが変更されます。例えば:
static void Main(string[] args)
{
int startPos = 0;
List<string> intList = new List<string>();
for (int i = 0; i < 10; i++)
{
intList.Add(i.ToString());
}
var qResult = from c in intList
where Convert.ToInt32(c) >= startPos
select c;
// prints count as 10
Console.WriteLine("List count is :"+qResult.Count());
startPos = 5;
// prints count as 5
Console.WriteLine("List count is :" + qResult.Count());
}
出力:
List count is :10
List count is :5
startPos = 5;
上記の例では、 の後にqResult
が変更されていることがわかります。これがどのように起こったのか理解できません。私の知る限り、int
値型です。
Linq クエリは行で再度実行されますstartPos = 5;
か? はいの場合、パフォーマンスへの影響はありますか? そして最も重要なことは、ここで何か不足していますか?