Как выбрать строки в DataTable на основе имени и даты в VB.net? - PullRequest
0 голосов
/ 18 сентября 2018

Попытка создать выражение VB.net для выбора строк из таблицы данных, которые имеют только имя определенного поставщика (столбец Vendor), а событие происходит после определенной даты (столбец PurchaseDate).

Мой текущийПодход заключается в использовании:

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

В настоящее время говорится, что DateTime является недопустимым именем типа, хотя уверен, что это синтаксис для преобразования, и он принимает DateTime в качестве объекта для форматирования.

1 Ответ

0 голосов
/ 18 сентября 2018

Лучший вариант зависит от того, что именно вы хотите сделать с данными впоследствии, но, если вы хотите придерживаться этого метода 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')")

ВСЕГДА Сначала прочтите соответствующую документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...