Linq 的多条件组合查询

有很多查询条件,当条件为NUll时不做查询,只有条件有值时才作为查询条件查询。

时间 AddTime

名称 Name

。。。

//添加时间开始
        string strAddTimeStart = txtAddTimeStart.Text;

        DateTime AddTimeStart = SqlDateTime.MinValue.Value;
        if (!string.IsNullOrEmpty(strAddTimeStart))
        {
            AddTimeStart = Convert.ToDateTime(strAddTimeStart );
        }

        //添加时间结束
        string strAddTimeEnd = txtAddTimeEnd.Text;

        DateTime AddTimeEnd = SqlDateTime.MaxValue.Value;
        if (!string.IsNullOrEmpty(strAddTimeEnd))
        {
            AddTimeEnd = Convert.ToDateTime(strAddTimeEnd);
        }

var resultsql = from w in students
                         where
                             (!string.IsNullOrEmpty(strAddTimeStart) ? AddTimeStart >= w.addTime : true) &&

                            (!string.IsNullOrEmpty(strAddTimeEnd) ? AddTimeEnd >= w.addTime : true) &&

                             (!string.IsNullOrEmpty(OCState) ? w.Name.Equals(Name) : true)

                          select new

                              {w.name,

                                w.sex

                              };

需要注意的是这样

 (!string.IsNullOrEmpty(strAddTimeStart) ? Convert.ToDateTime(AddTimeStart) >= w.addTime : true) 是不对的,会报无法识别的DateTime。

所以时间必须在外边转换。

猜你喜欢

转载自blog.csdn.net/ashou706/article/details/4295689
今日推荐