C# 我正在为我的项目制作搜索功能。我如何优化我的查询,因为它有这么多;如有其他",;声明?
我正在为我的项目创建搜索功能。我如何优化我的查询,因为它有这么多C# 我正在为我的项目制作搜索功能。我如何优化我的查询,因为它有这么多;如有其他",;声明?,c#,.net,linq,C#,.net,Linq,我正在为我的项目创建搜索功能。我如何优化我的查询,因为它有这么多if-else语句 我使用if-else语句来检查是否有空值,但它增加了代码的复杂性和内存。我想减少它;如何优化查询,使查询中的if-else语句数最少 public List<tbltask> gettaskssdata(int c, int userid, string a, string StartDate, string EndDate, string ProjectID, string statusid) {
if-else
语句
我使用if-else
语句来检查是否有空值,但它增加了代码的复杂性和内存。我想减少它;如何优化查询,使查询中的if-else
语句数最少
public List<tbltask> gettaskssdata(int c, int userid, string a, string StartDate, string EndDate, string ProjectID, string statusid)
{
List<tbltask> tbtask = new List<tbltask>();
var selectproject = entity.tbluserprojects.Where(x => x.user_id == userid).Select(x => x.Projectid);
if (statusid != "" && ProjectID != "" && a != "" && StartDate != "" && EndDate != "")
{
int pid = Convert.ToInt32(ProjectID);
int sid = Convert.ToInt32(statusid);
DateTime sdate = Convert.ToDateTime(StartDate).Date;
DateTime edate = Convert.ToDateTime(EndDate).Date;
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblproject.ProjectId == pid) && (x.tblstatu.StatusId == sid) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a)) && (x.StartDate >= sdate && x.EndDate <= edate)).OrderByDescending(x => x.ProjectId).ToList();
}
else if (statusid == "" && ProjectID != "" && a != "" && StartDate != "" && EndDate != "")
{
int pid = Convert.ToInt32(ProjectID);
DateTime sdate = Convert.ToDateTime(StartDate).Date;
DateTime edate = Convert.ToDateTime(EndDate).Date;
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblproject.ProjectId == pid) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a)) && (x.StartDate >= sdate && x.EndDate <= edate)).OrderByDescending(x => x.ProjectId).ToList();
}
else if (ProjectID == "" && statusid != "" && a != "" && StartDate != "" && EndDate != "")
{
int sid = Convert.ToInt32(statusid);
DateTime sdate = Convert.ToDateTime(StartDate).Date;
DateTime edate = Convert.ToDateTime(EndDate).Date;
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblstatu.StatusId == sid) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a)) && (x.StartDate >= sdate && x.EndDate <= edate)).OrderByDescending(x => x.ProjectId).ToList();
}
else if(ProjectID!="" && StartDate == "" && EndDate == "" && statusid == "" && a == "")
{
int pid = Convert.ToInt32(ProjectID);
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblproject.ProjectId == pid)).OrderByDescending(x => x.ProjectId).ToList();
}
else if(statusid!="" && ProjectID=="" && StartDate == "" && EndDate == "" && a == "")
{
int sid = Convert.ToInt32(statusid);
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblstatu.StatusId == sid) ).OrderByDescending(x => x.ProjectId).ToList();
}
else if (a == "" && StartDate != "" && EndDate != "" && ProjectID != "")
{
int pid = Convert.ToInt32(ProjectID);
DateTime sdate = Convert.ToDateTime(StartDate).Date;
DateTime edate = Convert.ToDateTime(EndDate).Date;
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.ProjectId == pid) && (x.StartDate >= sdate && x.EndDate <= edate)).OrderByDescending(x => x.ProjectId).ToList();
}
else if (StartDate == "" && EndDate == "" && statusid != "" && ProjectID != "" && a != "")
{
int pid = Convert.ToInt32(ProjectID);
int sid = Convert.ToInt32(statusid);
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblproject.ProjectId == pid) && (x.tblstatu.StatusId == sid) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a))).OrderByDescending(x => x.ProjectId).ToList();
}
else if (a == "" && StartDate == "" && EndDate == "" && ProjectID != "" && statusid != "")
{
int pid = Convert.ToInt32(ProjectID);
int sid = Convert.ToInt32(statusid);
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Include(x => x.tblstatu).Where(x => selectproject.Contains(x.ProjectId) && x.tblproject.company_id == c && x.tblproject.ProjectId == pid && x.tblstatu.StatusId == sid).OrderByDescending(x => x.ProjectId).ToList();
}
else if (a != "" && StartDate == "" && EndDate == "" && ProjectID == "" && statusid == "")
{
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a))).OrderByDescending(x => x.ProjectId).ToList();
}
else if (a != "" && ProjectID != "" && StartDate == "" && EndDate == "" && statusid == "")
{
int pid = Convert.ToInt32(ProjectID);
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.tblproject.ProjectId == pid) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a))).OrderByDescending(x => x.ProjectId).ToList();
}
else if (a != "" && StartDate != "" && EndDate != "" && ProjectID == "" && statusid == "")
{
DateTime sdate = Convert.ToDateTime(StartDate).Date;
DateTime edate = Convert.ToDateTime(EndDate).Date;
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && (x.tblproject.company_id == c) && (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a)) && (x.StartDate >= sdate && x.EndDate <= edate)).OrderByDescending(x => x.ProjectId).ToList();
}
else
{
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).Where(x => selectproject.Contains(x.ProjectId) && x.tblproject.company_id == c).OrderByDescending(x => x.ProjectId).ToList();
}
return tbtask;
}
public List gettaskssdata(int c,int userid,string a,string StartDate,string EndDate,string ProjectID,string statusid)
{
List tbtask=新列表();
var selectproject=entity.tbluserprojects.Where(x=>x.user\u id==userid);
如果(statusid!=“”&&ProjectID!=“”&&a!=“”&&StartDate!=“”&&EndDate!=“”)
{
int pid=转换为32(ProjectID);
int sid=Convert.ToInt32(statusid);
DateTime sdate=Convert.ToDateTime(StartDate).Date;
DateTime-edate=Convert.ToDateTime(EndDate).Date;
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)和&(x.tblproject.company_id==c)和&(x.tblproject.projectd==pid)和&(x.tblstatu.StatusId==sid)和&(x.TaskName.Contains(a)| | | x.tbUser.User.User.User_name.Contains(a))&(a))&(x.StartDate>&x.EndDate&&x.told)项目日期);
}
否则如果(statusid==“”&&ProjectID!=“”&&a!=“”&&StartDate!=“”&&EndDate!=“”)
{
int pid=转换为32(ProjectID);
DateTime sdate=Convert.ToDateTime(StartDate).Date;
DateTime-edate=Convert.ToDateTime(EndDate).Date;
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)&&(x.tblproject.company_id==c)&(x.tblproject.projectd==pid)&(x.TaskName.Contains(a)| | x.tbUser.User.User_name.Contains(a))&(x.StartDate>=sdate&&x.EndDate x.projectd).ToList();
}
else if(ProjectID==“”&&statusid!=“”&&a!=“”&&StartDate!=“”&&EndDate!=“”)
{
int sid=Convert.ToInt32(statusid);
DateTime sdate=Convert.ToDateTime(StartDate).Date;
DateTime-edate=Convert.ToDateTime(EndDate).Date;
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)&(x.tblproject.company_id==c)&(x.tblstatu.StatusId==sid)&(x.TaskName.Contains(a)| | x.tbUser.User.User_name.Contains(a))&(x.StartDate>=sdate&&x.EndDate x.projectd).ToList();
}
else if(ProjectID!=“”&&StartDate=“”&&EndDate=“”&&statusid=“”&&a=“”)
{
int pid=转换为32(ProjectID);
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.ProjectId)&&&(x.tblproject.company_id==c)&&(x.tblproject.ProjectId==pid)).OrderByDescending(x=>x.ProjectId).ToList();
}
else if(statusid!=“”&&ProjectID=“”&&StartDate=“”&&EndDate=“”&&a=“”)
{
int sid=Convert.ToInt32(statusid);
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.ProjectId)和&(x.tblproject.company_id==c)和&(x.tblstatu.StatusId==sid)).OrderByDescending(x=>x.ProjectId).ToList();
}
如果(a==“”&&StartDate!==“”&&EndDate!==“”&&ProjectID!=“”)
{
int pid=转换为32(ProjectID);
DateTime sdate=Convert.ToDateTime(StartDate).Date;
DateTime-edate=Convert.ToDateTime(EndDate).Date;
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.ProjectId)&&&(x.tblproject.ProjectId==pid)&&(x.StartDate>=sdate&&x.EndDate x.ProjectId).ToList();
}
else if(StartDate==“”&&EndDate==“”&&statusid!=“”&&ProjectID!=“”&&a!=“”)
{
int pid=转换为32(ProjectID);
int sid=Convert.ToInt32(statusid);
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)和&(x.tblproject.company_id==c)&(x.tblproject.ProjectId==pid)和&(x.tblstatu.StatusId==sid)和&(x.TaskName.Contains(a)| | | x.tbUser.User.User_name.Contains(a)).OrderByDescending(x=>projectd).ToList();
}
否则如果(a==“”&&StartDate==“”&&EndDate==“”&&ProjectID!=“”&&statusid!=“”)
{
int pid=转换为32(ProjectID);
int sid=Convert.ToInt32(statusid);
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).Include(x=>x.tblstatu).其中(x=>selectproject.Contains(x.projectd)&&x.tblproject.company_id==c&&x.tblproject.ProjectId==pid&&x.tblstatu.StatusId==sid).OrderByDescending(x=>x.projectd).ToList();
}
如果(a!=“”&&StartDate=“”&&EndDate=“”&&ProjectID=“”&&statusid=“”)出现异常
{
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)&&&(x.tblproject.company_id==c)&&(x.TaskName.Contains(a)| | x.tbUser.User_name.Contains(a)).OrderByDescending(x=>x.projectd.ToList();
}
如果(a!=“”&&ProjectID!=“”&&StartDate=“”&&EndDate=“”&&statusid=“”)为
{
int pid=转换为32(ProjectID);
tbtask=entity.tbltasks.Include(x=>x.tblproject).Include(x=>x.tbUser).其中(x=>selectproject.Contains(x.projectd)&&&(x.tblproject.company_id==c)&&(x.tblproject.ProjectId==pid)&(x.TaskName.Contains(a)| | x.tbUser.User.User_name.Contains(a)).OrderByDescending(x=>x.projectd).ToList();
}
如果(a!=“”&&StartDate!=“”&&EndDate!=“”&&ProjectID=“”&&statusid=“”)为else,则为
{
DateTime sdate=Convert.ToDateTime(StartDate).Date;
DateTime edate=Conv
public List<tbltask> gettaskssdata(int? c, int? userid, string a, DateTime? StartDate, DateTime? EndDate, int? ProjectID, int? statusid)
{
tbtask = entity.tbltasks.Where(x => (!c.HasValue || x.tblproject.company_id == c.Value) && ...)
public List<tbltask> gettaskssdata(int? c, int? userid, string a, string StartDate, string EndDate, int? ProjectID, int? statusid)
{
List<tbltask> tbtask = new List<tbltask>();
DateTime sdate = (StartDate != "") ? Convert.ToDateTime(StartDate).Date : new DateTime();
DateTime edate = (EndDate != "") ? Convert.ToDateTime(EndDate).Date : new DateTime();
tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser).
Where(x => x.tblproject.company_id == c
&& (ProjectID == 0 || ProjectID == x.tblproject.ProjectId)
&& (statusid == 0 || statusid == x.tblstatu.StatusId)
&& (a == "" || (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a)))
&& ((StartDate == "" && EndDate == "") || ((x.StartDate >= sdate && x.EndDate <= edate)))).ToList();
return tbtask;
}