-2

我有一张可以存储学生休假开始日期和结束日期的表格,如下所示:

StudentID   Age   startDate   EndDate

1           14    5/05/2013   7/05/2013   
4           17    4/04/2012   8/10/2012

我需要检查是否有任何新申请的假期不在该学生已经安排的假期范围内。例如,对于 ID = 1 的学生,他们应该无法申请从 2013 年 6 月 5 日开始的假期。

我正在使用 c# 并正在寻找使用 SQL 或 LINQ 的解决方案。

4

4 回答 4

1
DateTime dtApplied;
var allDates = yourDt.Rows.Cast<DataRow>().Where(x => dtApplied >= x.Field<DateTime>("startDate") && dtApplied <= x.Field<DateTime>("endDate"));

但是,如果我是你,我会考虑使用BETWEENin 。SQL

于 2013-05-14T13:01:27.573 回答
1

普通 SQL 从表中选择 count(*),其中 StudentID = 'parameterID' and startDate <= 'Parameter_StartDate' and EndDate <='Parameter_EnsDate';

于 2013-05-14T13:27:39.073 回答
0

你可以试试这个:

  var result = dt.AsEnumerable().Where(r =>((int)r["StudentID"])==stdID &&
                                       (DateTime)r["startDate"]<=yourStartDate &&
                                       (DateTime)r["EndDate"]=YourEndDate))
                                       .FirstOrDefault();

或者你也可以这样做:

string query="ID=1 AND startDate<=yourStratDate AND EndDate>=yourEndDate";
DataRow [] dr=dt.Select(strQuery);
于 2013-05-14T13:09:09.547 回答
0
select student_id From TableName Where Student_id = 1 and @dateToCheck not( between startdate and enddate)
于 2013-05-14T13:10:24.593 回答