如何根据VB.net中的名称和日期在DataTable中选择行?

时间:2018-09-18 08:32:39

标签: vb.net datetime select type-conversion

尝试创建VB.net表达式以从数据表中选择仅具有特定供应商名称(“供应商”列)且事件在特定日期之后(“ PurchaseDate”列)的行。

我当前的方法是使用:

datatableVar.Select("Vendor = '" + vendorName.ToString + "' And PurchaseDate < Convert('" + eventDate.ToString + "', DateTime)")

目前,这是在说DateTime是无效的Type名称,但是可以肯定的是,这是convert的语法,并且它将DateTime当作要格式化的东西。

1 个答案:

答案 0 :(得分:2)

最好的选择取决于您随后对数据的确切处理,但是,假设您要坚持使用Select方法,则无需调用Convert,因为您可以使用DateTime文字:

datatableVar.Select($"Vendor = '{vendorName}' AND PurchaseDate < #{eventDate:M/dd/yyyy}#")

请注意,为了提高可读性,我还使用了字符串插值而不是串联。如果您使用的版本早于VB 2015,请改用String.Format

datatableVar.Select(String.Format("Vendor = '{0}' AND PurchaseDate < #{1:M/dd/yyyy}#",
                                  vendorName,
                                  eventDate)

您的原始代码无法正常工作的原因是您没有执行文档中告诉您执行的操作,即调用Convert。文档中的示例是这样的:

myDataColumn.Expression = "Convert(total, 'System.Int32')"

因此您可以在那里看到该类型使用名称空间限定,并且用单引号引起来。这意味着:

"', DateTime)")

应该是:

"', 'System.DateTime')")

始终请先阅读相关文档。