以下代码的目的是查找可用的 ID。
我写它时的想法是每次query.Any()
运行,然后查询再次运行,并使用局部id
变量中新增加的值。这源于我的知识,id
在执行查询之前不会被评估。
从我的实验结果来看,我可以看到它不是这样工作的,我想知道您如何重新编写代码以实现其既定目标,同时保持使用 LINQ to EF 的风格?
我知道如何以简单的方式重写——我的目标是更好地理解 LINQ 表达式的延迟执行及其执行上下文。
int id = 4700;
var query = from c in Advertisers
where c.ID == id
select c;
int loopCount = 0;
while(query.Any())
{
if(++loopCount == 5)
{
Console.WriteLine ("Cannot find a safe id.");
break;
}
Console.WriteLine ("Already a record with " + id);
id++;
}
Console.WriteLine ("The available id is " + id);