在DataTable.Select中使用BETWEEN

时间:2009-12-15 11:31:28

标签: asp.net vb.net select datatable

我认为这很简单,但显然不是!

基本上,我有一个约会,并想在两个日期列上做'之间',如下所示:

myDataTable.Select(myDate & " between (StartDate and EndDate)")

其中StartDate和EndDate是DataTable中存在的日期列。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

为什么不直接使用 > = < =

Dim dt As New DataTable()
dt.Columns.Add("StartDate")
dt.Columns.Add("EndDate")
Dim row1 As DataRow = dt.NewRow()
row1("StartDate") = New DateTime(2009, 1, 1)
row1("EndDate") = New DateTime(2009, 1, 31)
dt.Rows.Add(row1)

Dim myDate As New DateTime(2008, 12, 15)
Dim rows As DataRow() = dt.[Select]([String].Format("#{0}# >= StartDate AND #{0}# <= EndDate", myDate.ToString("dd MMM yyyy")))

答案 1 :(得分:4)

DataTable.Select方法不支持BETWEEN操作。此操作特定于数据库引擎。请记住,DataTable是内存中的构造,并不一定支持数据库服务器的所有功能。

DataTable.Select方法支持与DataColumn.Expression相同的过滤器表达式语法。您可以尝试以下表达式来实现相同的目的(注意我没有测试过这个!):

myDataTable.Select("#" + myDate + "# >= StartDate AND EndDate <= #" + myDate + "#");