[英]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.