我有以下IQueryable,有多个评估,但我注意到这导致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();
答案 0 :(得分:0)
逻辑在.ToList()和fillinViewBag之前有一个fillinViewBag方法,对.sum .avg等进行了多次评估。
fillinViewBag方法只需要.Tolist()之前和之后,只需要执行查询1和fillinViewBag方法只使用内存中的数据。
感谢您提供快速反馈。