0

在我的 SQL 2008 R2 中,我有这张表:

在此处输入图像描述

我创建了 LINQ 语法来选择所有大于计算机时间的时间:

 public IList<LS_CLIENTHORRAIRE> Get_All_Obj(string CLIENT_ID)
        {
            try
            {
                IList<LS_CLIENTHORRAIRE> LesListe;
                using (Soft8Exp_ClientEntities oEntite_T = new Soft8Exp_ClientEntities())
                {
                    int The_Hour = DateTime.Now.Hour;
                    var query = from o in oEntite_T.LS_CLIENTHORRAIRE where o.CLIENT_ID == CLIENT_ID && o.HORRAIRE > new TimeSpan(The_Hour, 00/*minutes*/, 00/*seconds*/) select o;
                    LesListe = query.ToList();
                }
                return LesListe;
            }
            catch (Exception excThrown)
            {
                throw new Exception("Err_02", excThrown);
            }
        }

它工作正常:

  • 当小时计算机08:00然后它返回12:00并且19:00
  • 当小时计算机13:00然后它返回19:00

但现在我还想更改查看日期的程序:

  • 当小时计算机08:00然后它返回12:00and19:0005:00
  • 当小时计算机13:00然后它返回19:0005:00
  • 当小时计算机20:00然后它返回05:00

任何想法 ?

我试过这样:

 DateTime The_Date = DateTime.Now.Date;
                    var query = from o in oEntite_T.LS_CLIENTHORRAIRE where o.CLIENT_ID == CLIENT_ID && The_Date.Add(o.HORRAIRE) > DateTime.Now select o;
                    LesListe = query.ToList(

);

但不幸的是它不起作用

4

1 回答 1

1
var query = oEntite_T.LS_CLIENTHORRAIRE
                .Where(o => o.CLIENT_ID == CLIENT_ID &&
                      (o.HORRAIRE > DateTime.Now.TimeOfDay || 
                       o.HORRAIRE.Hours == 5));

这将使该方法的行为像您想要的那样。虽然我不明白,为什么你想要 5:00 返回,即使它实际上小于DateTime.Now = 13:00.

我认为您的表格缺少日期信息,这使得逻辑中断。

于 2013-02-05T09:47:48.427 回答