Linq语句,多个where子句

时间:2013-05-15 16:49:32

标签: linq

我刚才写了这个linq语句:

Location loc = db.Locations.Where(l => l.name == name).Where(l => l.type == "SERV").FirstOrDefault();

我想知道你是如何做select from where and ...或者是否有更好的方法来做到这一点

我正在尝试从地址名称中选择名称是传入的名称,类型是传入的类型,请找到第一个与此匹配的位置。

2 个答案:

答案 0 :(得分:2)

您无需链接Where - 您可以使用&&代替。此外,由于FirstOrDefault采用条件,您可以在调用中移动整个子句,如下所示:

Location loc = db
    .Locations
    .FirstOrDefault(l => l.name == name && l.type == "SERV");

答案 1 :(得分:1)

你正在做的事情会很好,但你也可以这样做:

Location loc = db.Locations.Where(l => l.name == name && l.type == "SERV").FirstOrDefault();

<强>更新

由于这显然违背了数据库对象,我很好奇底层SQL在每种情况下会是什么样子 - 我的猜测是它们会是相同的。

我使用ToTraceString()扩展来查看SQL,正如预期的那样,它们是相同的。