尝试创建一个 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')")
请务必先阅读相关文档。