0

我正在尝试将存储为字符串的 24 小时时间格式与当前时间进行比较,如下所示

    [AllowAnonymous]
    public ActionResult _ProgOn()
    {
        int i = (int)DateTime.Now.DayOfWeek;
        DateTime dt = DateTime.Now;
        var onNow = db.Programs
         .Where(u => u.PrOk == true)
         .Where(u => u.DaId == i)
         .Where(u => u.TimeOn == dt.ToString("HH:mm")); 
        return PartialView(onNow);

但这似乎不能被 Linq 查询所接受。如果我指出正确的方向,我将不胜感激。

4

2 回答 2

2

将时间字符串传递给 Linq 查询:

    int i = (int)DateTime.Now.DayOfWeek;
    string time = DateTime.Now.ToString("HH:mm");

    var onNow = from u in db.Programs
                where u.PrOk &&
                      u.DaId == i &&
                      u.TimeOn == time
                select u;

    return PartialView(onNow);

此外,您不需要将布尔值与真/假进行比较。而且我认为查询语法在这里看起来更好。

于 2013-01-23T16:37:40.557 回答
0

Linq 将只能使用它可以翻译的内容。尝试将 a 转换为DateTimea string,然后进行比较:

[AllowAnonymous]
public ActionResult _ProgOn()
{
    string t =  dt.ToString("HH:mm");

    int i = (int)DateTime.Now.DayOfWeek;
    DateTime dt = DateTime.Now;
    var onNow = db.Programs
     .Where(u => u.PrOk == true)
     .Where(u => u.DaId == i)
     .Where(u => u.TimeOn == t); 
    return PartialView(onNow);
于 2013-01-23T16:38:48.837 回答