【发布时间】:2015-08-20 23:22:59
【问题描述】:
我有以下 IQueryable where,有多个评估,但我注意到这导致对服务器执行 9 个查询?实际上什么时候应该只有一个?
var datafound = db.CustomersData
.Where(x => x.EntryDate == eod.EntryDate);
if (!string.IsNullOrWhiteSpace(eod.Type))
datafound = datafound.Where(x => x.Type == eod.Type);
if (!string.IsNullOrWhiteSpace(eod.LastName))
datafound = datafound.Where(x => x.LastName.Contains(eod.LastName));
if (!string.IsNullOrWhiteSpace(eod.Address))
datafound = datafound.Where(x => x.Address.Contains(eod.Address));
if (!string.IsNullOrWhiteSpace(eod.BuildingName))
datafound = datafound.Where(x => x.BuildingName.Contains(eod.BuildingName));
.....
.....
return datafound.ToList();
【问题讨论】:
-
您是如何得出这样的结论的?这会导致 9 个查询?
-
@TravisJ 我同意 - 我看不出这将如何执行 9 次,即使
CustomersData不是IQueryable。我们能看到它正在运行的查询吗? -
不适用于
IQueriable。如果你的“...”没有隐藏任何额外的逻辑。ToList()将“执行”(如果我可以这么说的话)您的实际查询。 -
应该是一个查询,除非你在debug中加断点。
-
... 与查询生成器的风格相同。我漏掉了,因为它重复了同样的事情
标签: c# asp.net linq asp.net-mvc-4