2016-03-15 63 views
0

我有以下Linq查詢。我想要的是,如果我搜索特定的year,我應該得到相應的記錄year。否則只顯示當年的記錄。同樣的方法searchtext也有待完成。LINQ - Where條件 - 「if-else」個案

public ActionResult Search(string searchtext, int? year) 
    { 
       string selyear = year.ToString(); 
       string curyear = (DateTime.Now.Year).ToString(); 

       hdms = from t in db.HOLIDAY       
         where  
          (year == null || t.DOH.StartsWith(selyear)) && 
          (searchtext == "" || t.HOLIDAY_NAME == searchtext)      
         select new HOLIDAYDETAILS 
         { 
          DOH = t.DOH,        
         }; 
         .... 
    } 

我也想if (year == null) then t.DOH.StartsWith(curyear)

if (searchtext == "") then t.HOLIDAY_NAME != "Sunday" && t.HOLIDAY_NAME != "Saturday"滿足這個。

另外如果兩者都是空的同時,兩個條件應該一起滿足。

我怎麼能在上面的where子句中給出這個呢?

回答

2
public ActionResult Search(int? year) 
{ 
    string curyear = (DateTime.Now.Year).ToString(); 
    string selyear = year!=null? year.ToString() : curyear; 

    var query = from t in db.HOLIDAY 
       join t1 in db.EMPLOYEE on t.UPDATED_BY equals t1.EMP_CODE 
       select new {t,t1}; 

    query = query.Where(o=>o.t.DOH.StartsWith(selyear)); 

    if (searchtext == "") 
    { 
     query = query.Where(o=>o.t.HOLIDAY_NAME != "Sunday" && o.t.HOLIDAY_NAME != "Saturday"); 
    } 

    hdms = query.OrderBy(o=>o.t.DOH).Select(o=> new HOLIDAYDETAILS 
      { 
       DOH = o.t.DOH,        
      }); 
    .... 
} 
+0

上面的代碼爲我工作。你能否給我'searchtext'的條件呢? –

+0

@ LimnaD'silva你可以根據你的條件逐步創建查詢 – Backs

3

如果檢查一年爲空或不就是你的問題,那麼你簡直可以像這個 -

public ActionResult Search(int? year) 
    { 
       string selyear = year.ToString(); 
       string queryyear = (string.IsNullOrEmpty(selyear)) // checking for null 
            ? (DateTime.Now.Year).ToString() // current year 
            : selyear; // year in query 

       hdms = from t in db.HOLIDAY 
         join t1 in db.EMPLOYEE on t.UPDATED_BY equals t1.EMP_CODE 
         where  
          t.DOH.StartsWith(queryyear) // comparing queryyear   

         orderby 
          t.DOH 
         select new HOLIDAYDETAILS 
         { 
          DOH = t.DOH,        
         }; 
         .... 
    } 

希望這能對你的作品...