var result=from c in Products
where c.Price>500
select c;
foreach(Product p in result){
Console.WriteLine(p.Name);
}
foreach(Product p in result){
Console.WriteLine(p.Name);
}
因此,对于上述程序,两个foreach语句会导致查询被执行两次,这种行为被称作
Linq延迟执行。如果使用不当,会导致各种程序效率问题,比如大量的数据绑定如果做得是Linq延迟执行,程序效率将会大大降低。
改进Linq延迟执行
var result=from c in Products
where c.Price>500
select c;
var list=result.ToList<Product>();
foreach(Product p in result){
Console.WriteLine(p.Name)
}
foreach(Product p in result){
Console.WriteLine(p.Name)
}
通过调用ToList或者ToArray方法,可以直接执行Linq查询,将查询结果缓冲再list变量中。从而可以避免Linq延迟执行的效率问题。
where c.Price>500
select c;
foreach(Product p in result){
Console.WriteLine(p.Name);
}
foreach(Product p in result){
Console.WriteLine(p.Name);
}
因此,对于上述程序,两个foreach语句会导致查询被执行两次,这种行为被称作
Linq延迟执行。如果使用不当,会导致各种程序效率问题,比如大量的数据绑定如果做得是Linq延迟执行,程序效率将会大大降低。
改进Linq延迟执行
var result=from c in Products
where c.Price>500
select c;
var list=result.ToList<Product>();
foreach(Product p in result){
Console.WriteLine(p.Name)
}
foreach(Product p in result){
Console.WriteLine(p.Name)
}
通过调用ToList或者ToArray方法,可以直接执行Linq查询,将查询结果缓冲再list变量中。从而可以避免Linq延迟执行的效率问题。