2016-03-15 7 views
0

У меня есть следующий запрос Linq. Я хочу, чтобы я искал конкретный year, я должен получить соответствующие записи об этом year. Else просто показывают записи текущего года. То же самое можно сделать и searchtext.LINQ - Где условия - "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".

Также если оба значения равны нулю одновременно, оба условия должны выполняться вместе.

Как я могу дать это тоже на выше, где статья?

ответ

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

Если проверка года является недействительным или не ваша проблема, то вы можете просто сделать, как this-

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,        
         }; 
         .... 
    } 

Надеется, что это работает для вас ...

Смежные вопросы