根据ASP.NET中的Date过滤数据

时间:2014-08-13 10:42:54

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

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

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

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

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

我被困在这里。你能指导我吗?接下来做什么 ?如何连接表? 关于观点的内容。

我是asp.net和mvc的新手。

3 个答案:

答案 0 :(得分:1)

SQL Query将是:

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)等。

答案 1 :(得分:1)

首先添加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);
    }

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

答案 2 :(得分:1)

如果要链接数据库,可以像这样使用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-&amp;之间的日期。 endDate,这应该返回您需要的数据。祝你好运!