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



尝试创建一个 VB.net 表达式,以从数据表中选择仅具有特定供应商名称的行("供应商"列(,并且事件在特定日期之后("购买日期"列(。

我目前的方法是使用:

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

目前它说日期时间是一个无效的类型名称,非常确定这是转换的语法,它需要日期时间作为格式化的东西。

最佳选择取决于您之后要对数据执行的操作,但是,假设您想坚持使用该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')")

请务必先阅读相关文档。

最新更新