1. 程式人生 > >LINQ To SQL 拼接查詢條件

LINQ To SQL 拼接查詢條件

        private void DoQuery()
        {
            Expression<Func<DataAccess.e_Score_V, bool>> expr = n => GetCondition(n);
            List<DataAccess.e_Score_V> lstScore = _Context.e_Score_V.Where(expr.Compile()).OrderByDescending(e => e.Score).Take(this.Records).ToList();
            this.rptList.DataSource = lstScore;
            this.rptList.DataBind();
        }

        private bool GetCondition(DataAccess.e_Score_V entiey)
        {
            bool result = true;

            if (ValidationHelper.IsNumeric(this.txtUserID.Text))
            {
                result = entiey.UserID == int.Parse(this.txtUserID.Text);
            }

            if (!string.IsNullOrEmpty(this.dropScoreType.SelectedValue))
            {
                result &= entiey.ScoreType == int.Parse(this.dropScoreType.SelectedValue);
            }
            
            if (ValidationHelper.IsDateTime(this.txtFromDate.Text))
            {
                result &= entiey.ScoreDate >= DateTime.Parse(this.txtFromDate.Text);
            }

            
            if (ValidationHelper.IsDateTime(this.txtEndDate.Text))
            {
                result &= entiey.ScoreDate <= DateTime.Parse(this.txtEndDate.Text); ;
            }

            return result;
        }