I know this was asked a while ago but not a brilliant answer.
I would do something like this - please excuse the crude psudo code
string args[] = {'Ben', 'Sam'};
string bindList = "";
for(int ii=0;ii<args.count;++ii)
{
if(ii == 0)
{
bindList += ":" + ii;
}
else
{
bindList += ",:" + ii;
}
OracleParameter param = new OracleParameter();
param.dbType = types.varchar;
param.value = args[ii];
command.Parameters.Add(param);
}
query = "select * from TableName where username in(" + bindList + ")";
So then query ends up having in(:1,:2) and each of these are bound separately.
There is also a similar question here: http://stackoverflow.com/questions/2915122/oracle-c-how-do-i-use-bind-variables-with-select-statements-to-return-multiple/3782679