2012-03-13 25 views
1

我試圖獲得一個基本的LINQ查詢,但無法找出所有條件。年份可以等於「2009,2008,2007」的幾年,或者可以等於「%」,作爲通配符。此查詢適用於「2009,2008,2007」,但不適用於通配符。我怎樣才能使它適用於兩種情況?如何讓LINQ to SQL查詢與'IN'和通配符場景一起工作

var results = (from a in db.t_harvest_statistics 
         where yrs.Contains(a.year) 
         orderby a.id 
         select new { a.id, a.year, a.unit_number }).ToList(); 

回答

1

試試這個:

var results = (from a in db.t_harvest_statistics 
         where yrs.Contains(a.year) || yrs == "%" 
         orderby a.id 
         select new { a.id, a.year, a.unit_number }).ToList(); 
+0

那麼有時會有值,有時會使用通配符。那個腳本不會總是對年度結果進行通配嗎? – KeelRisk 2012-03-13 23:22:23

+0

在這種情況下,SQL引擎或代碼不會將%視爲通配符。它是一個簡單的字符串比較,如果年== ==「%」,則可以假設爲true。這應該適合你。 – RThomas 2012-03-13 23:27:18

+0

第二個條件只是檢查'yrs'是否等於字符串'%'。它不像sql'like'語句那樣使用相同的邏輯。 – 2012-03-13 23:28:03