ASP.NET MVC 3基础,试图获取符合特定条件的所有元素的列表

本文关键字:特定条件 列表 元素 获取 MVC NET 基础 ASP | 更新日期: 2023-09-27 18:26:19

我是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()方法按id查找特定行,要么只返回所有行。

ASP.NET MVC 3基础,试图获取符合特定条件的所有元素的列表

您可以对实体使用一些linq:

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

注意:在进行日期/时间比较时,您可能会遇到问题,因为实体框架将生成SQL来比较日期和时间。

如果你这样做了,你会使用EntityFunctions.TruncateTime来修复这个问题,如下所示:

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