我有一个包含两个表格的数据库。
第一张表Card : CardId, Description
。 - 记录所有可用的卡
第二张表RegistartionDt : RegistartionDtId, RegisteredDateTime
,CardId
。保留使用特定卡的时间和数据数据。
我想制作一个搜索功能,按日期搜索卡片。例如,用户将从下拉菜单中选择日期。开始日期和结束日期,并搜索该范围内使用的卡片。
在我的家庭控制器中,我有一个采用开始日期和结束日期的动作结果。
我被困在这里。你能指导我吗?接下来做什么 ?如何连接表? 关于观点的内容。
我是asp.net和mvc的新手。
答案 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,这应该返回您需要的数据。祝你好运!