根据 ASP.NET 中的日期筛选数据
本文关键字:日期 筛选 数据 ASP NET 根据 | 更新日期: 2023-09-27 18:17:43
我有一个包含两个表的数据库。
第一个表Card : CardId, Description
. - 记录所有可用的卡第二张表RegistartionDt : RegistartionDtId, RegisteredDateTime
,CardId
。保留使用特定卡的时间和数据的数据。
我想制作一个搜索功能,按日期搜索卡片。例如,用户将从下拉菜单中选择日期。开始日期和结束日期,然后搜索该范围内使用的卡。
在我的家庭控制器中,我有一个操作结果,它采用开始日期和结束日期。
我被困在这里。你能指导我吗?下一步该怎么做?如何连接表格?风景呢。
我是 asp.net 和 mvc 的新手。
首先添加 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 之间的日期,这应该返回您需要的数据。祝你好运!