@ patmortech Используйте UNION ALL вместо UNION, если вам не нужны дубликаты значений или если вы можете получить только уникальные значения (потому что вы запрашиваете через первичные или уникальные ключи). Гораздо быстрее производительность с UNION ALL.
В SQL нет смысла "массивов". Есть таблицы, строки и столбцы. Результирующие наборы возвращают набор строк и столбцов. Можете ли вы привести пример того, что вы ищете? (Было бы полезно использовать DDL исходных таблиц и примеров данных.)
Как уже говорили другие, вы можете отправлять несколько запросов на сервер в рамках одного оператора execute и возвращать несколько наборов результатов через ADO.NET. Вы используете команду DataReader .NextResult (), чтобы вернуть следующий набор результатов.
Смотрите здесь для получения дополнительной информации: MSDN
Раздел: Получение нескольких наборов результатов с помощью NextResult
Вот пример кода:
static void RetrieveMultipleResults(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
reader.GetName(1));
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
reader.NextResult();
}
}
}