在我的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:00
和19:00
以及05:00
。13:00
时,它会返回19:00
和05: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(
);
但遗憾的是它不起作用
答案 0 :(得分: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
。
我认为你的表缺少日期信息,这会使逻辑失效。