C#Linq to SQL查询2日期之间否获得结果

时间:2018-06-26 13:48:05

标签: c#

我正在使用文本框,组合框和DateTimePicker构建复杂的搜索查询。

对于文本框和组合框,查询工作正常,但是在两个日期之间添加datetimepicker进行查询时,我什么也没得到...

将EF6与LINQ一起使用...

所以,我的课程要存储数据:

public class Projetos
    {
        public int ID { get; set; }
        public string Conc { get; set; } //Combobox
        public string Ent { get; set; } //Combobox
        public string Def { get; set; } //Textbox
        public DateTime DataR { get; set; }
    }

第一个查询并返回结果:

public IEnumerable<Proj> LoadProj()
    {
        var ctx = new JEntities();
        var query = (from p in ctx.tblProjs.AsQueryable()
                     join c in ctx.tblConcs on p.ConcID equals c.ConcID
                     join e in ctx.tblEnts on p.EntID equals e.EntID
                     select new Proj
                     {
                         ID = p.ProjID,
                         Conc = c.NameConc,
                         Ent = e.NameEnt,
                         Def = p.DefP,
                         DataR = p.DataR
                     });
        // The combination of these 3 controls works fine!           
        if (TxtDefP.TextLength > 0)
        {
            query = query.Where(s => s.DefP.Contains(TxtDefP.Text));
        }
        if(CmbCon.SelectedValue != null)
        {
            string SelectedValue = CmbConc.GetItemText(CmbConc.SelectedItem);
            query = query.Where(s => s.Conc == SelectedValue);
        }
        if(CmbEnt.SelectedValue != null)
        {
            string SelectedValue = CmbEnt.GetItemText(CmbEnt.SelectedItem);
            query = query.Where(s => s.Ent == SelectedValue);
        }

        //When filtering between these 2 dates, I get no results

        if (DataRFrom.Checked && DataRTo.Checked)
        {
            DateTime begin = DataRFrom.Value.Date;
            DateTime end = DataRTo.Value.Date;
            query = query.Where(s => s.DataR > begin && s.DataR < end);
        }
        return query.ToList();
    }

在SQL中,我有这样的日期...也许SQL中的Date格式搞砸了所有这一切?

enter image description here

我的问题是,为什么具有此日期范围的记录在数据库中,为什么我在2018-06-01和2018-06-06之间无法得到任何结果?

谢谢。

1 个答案:

答案 0 :(得分:0)

缺少日期属性:

query = query.Where(s => s.DataR.Date> begin && s.DataR.Date