2016-03-15 60 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,        
         }; 
         .... 
    } 

希望这能对你的作品...