Лучший вариант зависит от того, что именно вы хотите сделать с данными впоследствии, но, если вы хотите придерживаться этого метода 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')")
ВСЕГДА Сначала прочтите соответствующую документацию.