在lambda表达式中带有Join的Where子句
本文关键字:Join Where 子句 lambda 表达式 | 更新日期: 2023-09-27 18:03:31
我使用Lambda表达式的Where子句与Join。这是我的查询
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
子句在数据库服务器上执行,而对于第二个查询,它在客户端机器上执行。因此,对于第一个查询:
- 数据库服务器做更多的工作;
- 客户端机器做更少的工作;
- 从服务器到客户端的数据传输更少;
,第二个查询正好相反。很难说哪一个更快。大多数情况下,您的第一个查询会运行得更快,因此是首选,但我见过像第二个查询这样的查询运行得更快的场景。