2015-10-01 32 views
0

嗨,我有問題的實體查詢。請看我的代碼不能過濾動態查詢

var list = from table in db.USER_BETTINGS 
         where table.UserID == UserId 
         && table.UserID !="admin" 
          //&& table.WinningAfterRebate != 0m 
         && table.BettingTransactionTime >= fromDate && 
         table.BettingTransactionTime <= toDAte 
         //&& table.WinningAfterRebate !=0m 

        //  orderby table.BettingTransactionNumber descending//table.BettingNumber descending//, table.BettingTransactionTime descending// 
         select table; 

      if (loteryNumber != 0) 
      { 

       list= list.Where(x => x.LotteryNumber == loteryNumber); 
      } 

      if (gameNum != 0) 
      { 

       list= list.Where(x => x.GameNumber == gameNum); 
      } 

      if (periodDate != "") 
      { 

       list= list.Where(x => x.PeriodDate == periodDate); 
      } 



      if (close.Equals("Y")) 
      { 

       list= list.Where(w => w.WinningAfterRebate != 0m); 
      } 
      else 
      { 

       list= list.Where(x => x.WinningAfterRebate == 0); 
      } 

但是列表沒有過濾,它會返回所有記錄嗎?任何人都有面對這個問題嗎?

+0

它應該篩選參數是否正確。我們無法調試您的代碼,因此我正在投票關閉此代碼。 –

+0

@GiorgiNakeuri不工作。如果不是我不會打開這個問題。好的 – user998405

回答

1

您需要在此代碼中進行一些修改。如果條件允許,你不必要地使用了這麼多,我們需要首先擺脫它。使用以下內容更改您的查詢。

var list =(from table in db.USER_BETTINGS 
      where table.UserID == UserId 
      && table.UserID !="admin" 
      && table.BettingTransactionTime >= fromDate 
      && table.BettingTransactionTime <= toDAte 
      && table.LotteryNumber == (loteryNumber != 0 ? loteryNumber : table.LotteryNumber) 
      && table.GameNumber == (gameNum != 0 ? gameNum : table.GameNumber) 
      && table.PeriodDate == (periodDate != string.Empty ? periodDate : table.PeriodDate) 
      && (close.Equals("Y") ? table.WinningAfterRebate != 0 : table.WinningAfterRebate == 0) 
      ).ToList(); 
+0

感謝woking – user998405

+0

@歡迎:我明白,它幫助你,請不要使用這麼多'if..else'條件並使用**三元運算符**。 – Prabhat