簡體   English   中英

在LINQ查詢中的案例聲明使用C#在哪里條件

[英]Case Statement In linq query on where condition using c#

我需要在where語句的基本結果中,但是我正在獲取所有記錄,如何在linq where條件中給出case語句。 如果將空數據提供給搜索意味着它將搜索該字段。

我的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();

嘗試這個

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();

要在下面檢查語法合成的測試用例

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;
            }
        }
    }
}
​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM