У меня есть запрос, который в основном похож на это:
SELECT foo
FROM bar
where bar.Id in (1,2,3);
Я хотел бы передать список идентификаторов в виде одного параметра с IDbDataParameter, где запрос отформатирован:
SELECT foo
FROM bar
where bar.Id in (?ListOfID);
и затем используйте один параметр, который представляет собой список, вместо того, чтобы делать что-то вроде этого:
SELECT foo
FROM bar
where bar.Id in (?id1, ?id2, ?id3);
Я знаю, что это возможно в других провайдерах данных. Могу ли я сделать это с помощью стандартных классов System.Data?
P.S. причина, по которой я хочу использовать его в качестве одного параметра списка, а не ряда параметров, заключается в том, что при изменении количества параметров MySQL будет рассматривать запрос как новый, и мы теряем некоторые оптимизации кэширования. MySQl в основном заканчивается одним запросом на количество идентификаторов. Это та же самая причина, по которой я не хочу манипулировать базовым SQl как строкой, потому что тогда я получаю один запрос на VAULE, и это будет хуже.