调用"选择新建"是否会导致正在执行的基础查询?



如果附加 .ToList(( 到查询中,它会导致针对数据库执行查询。 如果使用Select New这是否也会立即执行查询,还是仍允许在执行之前更改查询?


如果需要,下面是一个示例:

var query = db.Cars();
if(model.CarNameSearch != "")
query = query.where(u => u.CarName == model.CarNameSearch);
return query.ToList();

在上面的示例中,查询实际上不会针对数据库执行,直到 。ToList(( 被调用。

相反,如果我这样做,则在返回之前执行的查询中是否会导致"新建"结果:

var query = from cars in db.Cars
select New MyResult{
MyModelCarName = cars.CarName,
MyModelCarColor= cars.Color
};
if(model.CarNameSearch != "")
query = query.where(u => u.MyModelCarName == model.CarNameSearch);
return query.ToList();

在这里使用new与否并不重要。它是 LINQ 方法。查询语法from - selectSelect()幕后,这是延迟执行的方法之一。

因此,第二个代码片段是编写具有延迟执行的查询表达式的完全有效方法,该查询表达式将在不早于ToList执行。

最新更新