我正在使用带有Join的Where子句的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);
哪一个更快?虽然我注意到两者都给出了相同的输出,但哪种方法是正确的?
答案 0 :(得分:2)
使用第一个查询,where
子句在数据库服务器上执行,而第二个查询则在客户端计算机上执行。因此,使用第一个查询:
和第二个问题恰恰相反。很难说哪个会更快。大多数情况下,您的第一个查询运行得更快,因此更受欢迎,但我已经看到过像第二个查询运行得更快的情况。