Использование DateTime с linq для возврата «События» на определенную дату - PullRequest
0 голосов
/ 13 июля 2011

В данный момент мой индекс группирует события по дате и возвращает сколько их связано с определенной датой.Я хочу добавить ссылку просмотра, которая будет перечислять события, связанные с датой.Я не могу сравнить DateTime в моем запросе linq, все, что я пытаюсь, просто возвращает пустое значение.

Вот моя модель

namespace AtAClick.Models
{
    public class WhatsOn
    {

    public int ID { get; set; }
    public DateTime? start { get; set; }
    public DateTime? end { get; set; }
    public string Name { get; set; }
    public string Desc { get; set; }
    public string link { get; set; }
    public bool CalenderDisplay { get; set; }
    public DateTime? day { get; set; }
    public int whtscount { get; set; }
    }
}

Здесь мои контроллеры индекса и просмотра

public ViewResult Index(WhatsOn model)
    {
        DateTime myDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

        var datequery =
                        db.WhatsOns.Where(c => c.start > myDate).OrderByDescending(c => c.start).GroupBy(c => c.start).AsEnumerable().Select(
                        sGroup => new WhatsOn
                        {
                            day = sGroup.Key,
                            whtscount = sGroup.Count()
                        });

        return View(datequery);
    }

    public ViewResult Browse(DateTime? day , int? id)
    {         
        var eventsquery = from c in db.WhatsOns
                          where c.start == day
                           select c;

        return View(eventsquery);
    }

Спасибо!

Обновление:

Привет!Все заработало

Вот мой новый контроллер;

    public ViewResult Browse(int? id, DateTime? day, DateTime? start)
    {

        var eventsquery = from c in db.WhatsOns where c.start.Value.Day == day.Value.Day select c;

        return View(eventsquery);


    }

И что за хитрость, в моем actionlink на мой взгляд ....

 @Html.ActionLink("Browse", "Browse", new { start=item.start, day=item.day })

Спасибо за помощь !!

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Существует много неправильного в том, чтобы оглядываться назад, сейчас, спустя годы, но на тот случай, если кому-то понадобится помощь linq, вот ответ.

public ViewResult Browse (int? Id, DateTime? Day, DateTime? Start) {

    var eventsquery = from c in db.WhatsOns where c.start.Value.Day == day.Value.Day select c;

    return View(eventsquery);


}

И что сделал трюк, в моей actionlink на мой взгляд ....

@Html.ActionLink("Browse", "Browse", new { start=item.start, day=item.day })
0 голосов
/ 13 июля 2011

Поскольку оба типа 'start' и 'day' имеют тип DateTime, компаратор на них будет проверять каждый бит на предмет полного объекта DateTime. Если вы просто пытаетесь просмотреть день, а не точную миллисекунду из DateTime, попробуйте:

c.start.Value.Day == day.Value.Day

Также неплохо было бы провести некоторую проверку на ноль для этих пустых полей.

...