2013-05-15 191 views
0

我有這樣的LINQ聲明我只是寫:LINQ的語句時,多個where子句

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

我想知道,如果這是你怎麼做select from where and ...或是否有更好的方法來做到這一點

我我正在嘗試從位置名稱中選擇名稱是傳入的名稱,而類型是傳入的類型,請讓我找到與此匹配的第一個位置。

回答

2

您不需要連鎖Where s - 您可以使用&&代替。此外,由於FirstOrDefault需要一個條件,你可以將整個條款裏面調用,就像這樣:

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

你是做什麼工作得很好,但你也可以只是這樣做:

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

UPDATE:

因爲這顯然是違背一個數據庫對象,我很好奇,底層的SQL會是什麼樣子在每種情況下 - 我的猜測是,他們將是相同的。

我使用了ToTraceString()擴展(請參閱示例here)查看SQL,並且與預期的一樣,它們是相同的。