簡體   English   中英

使用Lambda表達式中的Join子句

[英]Where clause with Join in lambda expression

我正在將Lambda表達式用於帶有連接的條件子句。 這是我的查詢

 var ActiveImages = db.tbl_Advertise
    .Where(i => i.IsVisible == true)
    .Join(db.tbl_ShopMast.Where(i => i.IsVisible == true && i.fk_userID == userid),
        i => i.fk_shop_id,
        j => j.ShopID,
        (i, j) => new { Advertise = i, Shop = j})
    .ToList();

或者我甚至可以將查詢查詢為:

var ActiveImages = db.tbl_Advertise
    .Join(db.tbl_ShopMast.Where(i => i.IsVisible == true && i.fk_userID == userid),
        i => i.fk_shop_id,
        j => j.ShopID,
        (i, j) => new { Advertise = i, Shop = j})
    .ToList()
    .Where(i=>i.Advertise.IsVisible == true);

哪一個工作更快? 盡管我注意到兩者都給出相同的輸出,但是哪種方法正確?

在第一個查詢中, where子句在數據庫服務器上執行,而在第二個查詢中,它在客戶端計算機上執行。 因此,使用第一個查詢:

  • 數據庫服務器要做更多的工作;
  • 客戶端計算機工作較少;
  • 較少的數據從服務器傳輸到客戶端;

而第二個查詢則相反。 很難說哪個會更快。 在大多數情況下,您的第一個查詢會運行得更快,因此是首選,但是我見過類似第二個查詢的查詢運行得更快的場景。

暫無
暫無

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

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