【问题标题】:Filter Data by date range c# mvc4按日期范围过滤数据c#mvc4
【发布时间】:2014-08-14 10:24:42
【问题描述】:

第一张桌子卡:CardId, Description。 - 记录所有可用的卡片 Second Table RegistartionDt:RegistartionDtId, RegisteredDateTime , CardId。保留使用特定卡的时间和数据。

我想做一个搜索功能,按日期搜索卡片。例如,用户将从下拉菜单中选择日期。开始日期和结束日期并搜索该范围内正在使用的卡片。

到目前为止我有这个:

public ActionResult List ()
{
    CardDBEntities _db = new CardDBEntities();

    var cards = (from c in _db.Cards
                 join d in _db.RegistrationDTs 
                 on c.CardId equals d.CardId
                 where d.RegistrationDateTime >= startDate && 
                       d.RegistrationDateTime <= endDate
                 select new
                 {
                     d.CardId,
                     c.Description
                 }).OrderByAscending(x => x.RegistrationDateTime)
                   .ToList();;

    return View(cards);
}

我应该在视图中做什么?如何显示我的结果?应该如何定义 endDate 和 startDate 我没有在任何地方定义它们。我希望 enddate 和 startdate 是用户将在搜索框中插入的值。

请帮忙。 谢谢你

【问题讨论】:

    标签: c# sql asp.net-mvc linq asp.net-mvc-4


    【解决方案1】:

    你可以试试这样的:

    // Declare a model class in your models folder, like below
    // You could give any name you want to this class
    public class ModelName
    {
        public int CardId { get; set; }
        public string Description { get; set; }
        public DateTime RegistrationDateTime { get; set; }
    }
    

    然后在您的控制器中,您可以将您的方法重构为以下方法:

    public ActionResult List (DateTime startDate, DateTime endDate)
    {
        using(var db = new CardDBEntities())
        {
            var cards = (from c in db.Cards
                         join d in db.RegistrationDTs 
                         on c.CardId equals d.CardId
                         where d.RegistrationDateTime >= startDate && 
                               d.RegistrationDateTime <= endDate
                        select new ModelName
                        {
                            CardId = d.CardId,
                            Description = c.Description,
                            RegistrationDateTime = d.RegistrationDateTime
                        }).OrderByAscending(x => x.RegistrationDateTime)
                          .ToList();
    
            ViewData["cards"] = cards;
    
            return View();  
        }
    }
    

    endDate 和 startDate 应该怎么定义 我没定义 任何地方。

    您可以在 ActionResult 方法中将它们定义为参数。

    我应该在视图中做什么?

    您可以从ViewBag 集合中读取数据。

    我应该在视图中做什么?

    这完全取决于您希望如何展示您的结果。

    【讨论】:

    • 我觉得这更合乎逻辑。非常感谢。让我试试看。
    • 你知道我为什么会得到:参数字典包含方法'System.Web.Mvc.ActionResult List( System.DateTime, System.DateTime)' in 'Reader1.Controllers.CardController'
    • @BesaNeziri 不幸的是,我不知道您为什么会收到此错误。
    • 感谢您的时间和精力。我真的很感激
    • @BesaNeziri 你欢迎老兄!完全没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2014-10-20
    • 2023-03-13
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多