我有我刚刚写的这个 linq 语句:
Location loc = db.Locations.Where(l => l.name == name).Where(l => l.type == "SERV").FirstOrDefault();
我想知道这是你的做法select from where and ...
还是有更好的方法来做到这一点
我正在尝试从位置名称中进行选择,其中名称是传入的名称,类型是传入的类型,让我找到与此匹配的第一个位置。
我有我刚刚写的这个 linq 语句:
Location loc = db.Locations.Where(l => l.name == name).Where(l => l.type == "SERV").FirstOrDefault();
我想知道这是你的做法select from where and ...
还是有更好的方法来做到这一点
我正在尝试从位置名称中进行选择,其中名称是传入的名称,类型是传入的类型,让我找到与此匹配的第一个位置。
您不需要链接Where
s - 您可以使用&&
。此外,由于FirstOrDefault
需要一个条件,您可以在调用中移动整个子句,如下所示:
Location loc = db
.Locations
.FirstOrDefault(l => l.name == name && l.type == "SERV");
你正在做的事情会很好,但你也可以这样做:
Location loc = db.Locations.Where(l => l.name == name && l.type == "SERV").FirstOrDefault();
更新:
由于这显然与数据库对象背道而驰,我很好奇在每种情况下底层 SQL 会是什么样子——我的猜测是它们会是相同的。
我使用 ToTraceString() 扩展来查看 SQL,正如预期的那样,它们是相同的。