簡體   English   中英

如何加快LINQ查詢的速度?

[英]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();  
}

這樣就消除了從本地數據庫中提取值,將其存儲到列表中,然后“丟棄”結果的麻煩。 取而代之的是,該計數將在服務器上進行計算,並且您只會跨出一個數字。

您還可以通過對CheckInCheckOut列進行正確索引來加快服務器上的查詢速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM