我正在使用 LINQ to Entity in Razor。我有这样的事情:
@foreach(Org o in Model) {
@foreach(User u in o.Users.Where(x => x.Active==true) ) {
<span> @u.FirstName </span>
}
}
当我查看 SQL Server Profiler 时,查询有两个主要的低效率:
- 它返回用户表中的所有列
- 它返回用户表中的所有行,而不仅仅是那些 Active==true 的行。
当然它可以正常工作,但我的印象是 LINQ 比这更聪明,并且会向 SQL 服务器发送更具体的查询。
问题:我可以让 LINQ 传递 WHERE 子句 (Active==true) 并且只自动获取 FirstName 列吗?
ps 除非严格相关,否则我对视图中的 LINQ 是否是好的做法不太感兴趣——例如,视图的优化是否与编译的代码不同?
这是我的控制器代码:
public ActionResult Index()
{
xyz_Entities db = new xyz_Entities();
return PartialView(db.Orgs);
}
更新 - 许多道歉,这实际上是一个嵌套循环,可能很重要。