[英]How can I speed this LINQ query up?
我知道使用謂詞有一種更有效的方法來執行此操作,但是由於它還很陌生,因此我不確定該怎么做。
List<HousingAssignment> list;
using (OEContext context = new OEContext())
{
var query =
from ha in context.HousingAssignments
where ((ha.BedID == bed.ID) &&
(((ha.CheckIn <= checkin) && (ha.CheckOut >= checkin)) ||
((ha.CheckIn <= checkout) && (ha.CheckOut >= checkout))))
select ha;
list = query.ToList();
}
return list.Count;
由於您只返回計數,因此可以使用Count方法在查詢中計算該計數 :
using (OEContext context = new OEContext())
{
var query =
from ha in context.HousingAssignments
where ((ha.BedID == bed.ID) &&
(((ha.CheckIn <= checkin) && (ha.CheckOut >= checkin)) ||
((ha.CheckIn <= checkout) && (ha.CheckOut >= checkout))))
select ha;
return query.Count();
}
這樣就消除了從本地數據庫中提取值,將其存儲到列表中,然后“丟棄”結果的麻煩。 取而代之的是,該計數將在服務器上進行計算,並且您只會跨出一個數字。
您還可以通過對CheckIn
和CheckOut
列進行正確索引來加快服務器上的查詢速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.