ASP.NET MVC 3 Основы, пытаясь получить список всех элементов, которые соответствуют определенным критериям - PullRequest
0 голосов
/ 01 марта 2012

Я новичок в MVC, но у меня возникают проблемы с поиском информации о том, как сделать некоторые базовые вещи, поэтому я бросил свой поиск и решил просто спросить.

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

Моя модель конкурса определена как:

public class Contest
{
    public int ContestId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public Boolean Published { get; set; }

    public virtual ICollection<Submission> Submissions { get; set; }
    public virtual ICollection<Tab> Tabs { get; set; }
}

И в моем контроллере я сейчас использую:

ViewBag.CurrentContests = db.Contests.ToList();

Мне просто интересно, как отфильтровать результатытолько тем, которые еще не «истекли».Это кажется самой основной вещью, но, возможно, я просто не смотрю в нужных местах.Все учебники, которые я нашел, используют метод Find() для поиска определенной строки по ее идентификатору или просто возвращают все строки.

1 Ответ

3 голосов
/ 01 марта 2012

Вы можете использовать некоторые linq-to-entity:

db.Contests.Where(c=> c.End > DateTime.Today).ToList();

Примечание : при сравнении даты и времени у вас могут возникнуть проблемы, потому что Entity-Framework будет генерировать SQL, который будет сравниватьдата и время .

Если вы это сделаете, вы бы использовали EntityFunctions.TruncateTime , чтобы исправить это следующим образом:

db.Contests
  .Where(c=> 
       EntityFunctions.TruncateTime(c.End) >
                            EntityFunctions.TruncateTime(DateTime.Today))
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...