2015-09-04 52 views
0

我需要在where語句的基本結果,但我得到所有的記錄,如何在LINQ條件給出一個case語句。如果給搜索的空數據是 意味着它應該搜索該字段。個案陳述在LINQ查詢哪裏條件使用c#

我的C#代碼

var TicketDetails = (from issuecases in caseModelDatabase.IssueCases 
          where (DbFunctions.TruncateTime(issuecases.CreatedDate) >= DbFunctions.TruncateTime(IssueDetails.StartDate) 
          && DbFunctions.TruncateTime(issuecases.CreatedDate) <= DbFunctions.TruncateTime(IssueDetails.ToDate) 

          || ((!string.IsNullOrEmpty(IssueDetails.TicketArea) && issuecases.TicketArea.Equals(IssueDetails.TicketArea)) 
          || (!string.IsNullOrEmpty(IssueDetails.TicketType) && issuecases.TicketType.Equals(IssueDetails.TicketType)) 
          || (!string.IsNullOrEmpty(IssueDetails.Status) && issuecases.Status.Equals(IssueDetails.Status)))) 
          select new { 

           issuecases.WorkRequestId, 
           issuecases.Summary, 
           issuecases.Status, 
           issuecases.CreatedDate, 
           issuecases.UpdatedDate 
          }).ToList(); 
+0

syntac取得測試用例可以檢查在cluase空... – andy

+0

我想存儲過程將是一個乾淨的方式,因爲您有權在數據庫中創建一個。 – Robert

+0

在票區是空的,我沒有給搜索,但結果來了 –

回答

0

檢查下面

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 
using System.Data.SqlClient; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      CaseModelDatabase caseModelDatabase = new CaseModelDatabase(); 
      cIssueDetails IssueDetails = new cIssueDetails(); 

      var TicketDetails = (from issuecases in caseModelDatabase.IssueCases 
           where (DbFunctions.TruncateTime(issuecases.CreatedDate) >= DbFunctions.TruncateTime(IssueDetails.StartDate) 
           && DbFunctions.TruncateTime(issuecases.CreatedDate) <= DbFunctions.TruncateTime(IssueDetails.ToDate)) 
           where (string.IsNullOrEmpty(IssueDetails.TicketArea) ? true : issuecases.TicketArea == IssueDetails.TicketArea) 
           where (string.IsNullOrEmpty(IssueDetails.TicketType) ? true : issuecases.TicketType == IssueDetails.TicketType) 
           where (string.IsNullOrEmpty(IssueDetails.Status) ? true : issuecases.Status == IssueDetails.Status) 

           select new 
           { 

            issuecases.WorkRequestId, 
            issuecases.Summary, 
            issuecases.Status, 
            issuecases.CreatedDate, 
            issuecases.UpdatedDate 
           }).ToList(); 
     } 

     public class CaseModelDatabase 
     { 
      public List<cIssueCases> IssueCases { get; set; } 
     } 
     public class cIssueCases 
     { 
      public DateTime CreatedDate { get; set; } 
      public string TicketArea { get; set; } 
      public string TicketType { get; set; } 
      public string Status { get; set; } 
      public string Summary { get; set; } 

      public int WorkRequestId { get; set; } 
      public DateTime UpdatedDate { get; set; } 

     } 
     public class cIssueDetails 
     { 
      public DateTime StartDate { get; set; } 
      public DateTime ToDate { get; set; } 
      public string TicketArea { get; set; } 
      public string TicketType { get; set; } 
      public string Status { get; set; } 

     } 
     public static class DbFunctions 
     { 
      public static DateTime TruncateTime(DateTime time) 
      { 
       return time; 
      } 
     } 
    } 
} 
​ 
0

試試這個

var TicketDetails = (from issuecases in caseModelDatabase.IssueCases 
          where ((DbFunctions.TruncateTime(issuecases.CreatedDate) >= DbFunctions.TruncateTime(IssueDetails.StartDate) 
          && DbFunctions.TruncateTime(issuecases.CreatedDate) <= DbFunctions.TruncateTime(IssueDetails.ToDate)) 

          || ((!string.IsNullOrEmpty(IssueDetails.TicketArea) && issuecases.TicketArea.Equals(IssueDetails.TicketArea)) 
          || (!string.IsNullOrEmpty(IssueDetails.TicketType) && issuecases.TicketType.Equals(IssueDetails.TicketType)) 
          || (!string.IsNullOrEmpty(IssueDetails.Status) && issuecases.Status.Equals(IssueDetails.Status)))) 
          select new { 

           issuecases.WorkRequestId, 
           issuecases.Summary, 
           issuecases.Status, 
           issuecases.CreatedDate, 
           issuecases.UpdatedDate 
          }).ToList(); 
+0

在這個沒有記錄會來,如果我沒有通過這三個值,日期時間方法是強制性的,其他人是可選的。如果我沒有通過三個值,記錄應該會出現 –