Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在为我的项目制作搜索功能。我如何优化我的查询,因为它有这么多;如有其他",;声明?_C#_.net_Linq - Fatal编程技术网

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;


    }