我有這樣的LINQ聲明我只是寫:LINQ的語句時,多個where子句
Location loc = db.Locations.Where(l => l.name == name).Where(l => l.type == "SERV").FirstOrDefault();
我想知道,如果這是你怎麼做select from where and ...
或是否有更好的方法來做到這一點
我我正在嘗試從位置名稱中選擇名稱是傳入的名稱,而類型是傳入的類型,請讓我找到與此匹配的第一個位置。
我有這樣的LINQ聲明我只是寫:LINQ的語句時,多個where子句
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();
UPDATE:
因爲這顯然是違背一個數據庫對象,我很好奇,底層的SQL會是什麼樣子在每種情況下 - 我的猜測是,他們將是相同的。
我使用了ToTraceString()擴展(請參閱示例here)查看SQL,並且與預期的一樣,它們是相同的。