entity-framework - 调用 Select New 是否会导致正在执行的基础查询?
问题描述
如果将 .ToList() 附加到查询中,则会导致针对数据库执行查询。如果您使用Select New
它是否也会立即执行查询,还是仍然允许在执行前更改查询?
如果需要,这里有一个例子:
var query = db.Cars();
if(model.CarNameSearch != "")
query = query.where(u => u.CarName == model.CarNameSearch);
return query.ToList();
在上面的示例中,在调用 .ToList() 之前,查询实际上不会对数据库执行。
相反,如果我这样做,则 Select New 是否会导致在返回之前执行的查询:
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 - select
在Select()
幕后,这是延迟执行的方法之一。
因此,第二个代码片段是一种完美有效的方式来组合具有延迟执行的查询表达式,该延迟执行将不早于ToList
.
推荐阅读
- javascript - 从文件输入迭代文件
- reactjs - 单击按钮后如何防止在按钮旁边呈现新组件
- jquery - Bootstrap DateTimePicker 'dp.change' 返回旧值
- haskell - Haskell Lambda 帮助 - 创建应用程序函数
- python-3.x - k-means 聚类映射
- reactjs - 获取状态对象的孩子
- asp.net-mvc - 无法使用 VueJS 验证默认值的下拉列表
- python - 如何仅在用户登录时向用户显示某些内容
- amazon-web-services - 批量调用 AWS Lambda?
- javascript - Scandit Websdk Javascript 设置方向