1

我有我刚刚写的这个 linq 语句:

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

我想知道这是你的做法select from where and ...还是有更好的方法来做到这一点

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

4

2 回答 2

2

您不需要链接Wheres - 您可以使用&&。此外,由于FirstOrDefault需要一个条件,您可以在调用中移动整个子句,如下所示:

Location loc = db
    .Locations
    .FirstOrDefault(l => l.name == name && l.type == "SERV");
于 2013-05-15T16:50:46.767 回答
1

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

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

更新:

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

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

于 2013-05-15T16:51:20.630 回答