根据 ASP.NET 中的日期筛选数据

本文关键字:日期 筛选 数据 ASP NET 根据 | 更新日期: 2023-09-27 18:17:43

我有一个包含两个表的数据库。

第一个表Card : CardId, Description . - 记录所有可用的卡第二张表RegistartionDt : RegistartionDtId, RegisteredDateTimeCardId。保留使用特定卡的时间和数据的数据。

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

在我的家庭控制器中,我有一个操作结果,它采用开始日期和结束日期。

我被困在这里。你能指导我吗?下一步该怎么做?如何连接表格?风景呢。

我是 asp.net 和 mvc 的新手。

根据 ASP.NET 中的日期筛选数据

首先添加 httpGet 我正在使用我的变量,你可以把你的

 [HttpGet]
    public ActionResult ShowTask()
    {
        ShowTask model = new ShowTask();
        var TaskData = (from d in edc.TaskTBs
                        join d1 in edc.TaskToUserTBs on d.TaskID equals d1.TaskID
                        where d.IsActive == true && d1.RegistrationId == Convert.ToInt32(Session["RegistrationId"])
                        select new
                        {
                            d.ProjectTB.ProjectName,
                            d1.RegistrationId,
                            d.TaskID,
                            d.DBName,
                            d.Description,
                            d.FromDate,
                            d.ToDate,
                            d.ProjectID,
                            d1.RegistrationTB.Name,
                            d1.RegistrationTB.Email
                        }).OrderByDescending(x => x.TaskID).ToList();
        if (TaskData != null)
        {
            if (model.FromSearchDate.ToString() != "" && model.FromSearchDate.ToString() != "1/1/0001 12:00:00 AM")
            {
                TaskData = TaskData.Where(x => x.FromDate.Contains(model.FromSearchDate.ToString())).ToList();
            }
            if (model.FromSearchDate.ToString() != "" && model.ToSearchDate.ToString() != "1/1/0001 12:00:00 AM")
            {
                TaskData = TaskData.Where(x => x.ToDate.Contains(model.ToSearchDate.ToString())).ToList();
            }
            model.Tasklist = TaskData;
        }
        return View(model);
    }

您可以在回发后调用此方法。

SQL 查询为:

SELECT DISTINCT(CARDID)
FROM CARD a
INNER JOIN
REGISTRATIONDT b
ON a.CARDID = b.CARDID
WHERE REGISTEREDDATETIME BETWEEN @startDate AND @endDate

使用该查询调用数据库并插入开始日期和结束日期。您可能希望使用命名参数来插入用户提供的值(开始/结束日期(,以便对 SQL 注入提供一层保护。

你的 SqlCommand commandText 属性是你的 SQL 语句,然后你可以调用 sqlCommand.Parameters.AddWithValue("@startDate", startDate( 等来获取其他参数。

如果要链接数据库,可以像这样使用 LINQ:

var innerJoinQuery =
    from card in Card 
    join regIdDt in RegistartionDton card.CardId equals RegistartionDt.CardId
    where regIdDt.RegisteredDateTime  >= _startDate && regIdDt.RegisteredDateTime <= _endDate
    select new { };

使用它们的公共字段将两个表连接在一起,然后添加一个 where 参数,用于搜索给定的 start- 和 endDate 之间的日期,这应该返回您需要的数据。祝你好运!