Есть много способов сделать это. Вероятно, самый простой способ - поместить значения из первого запроса в коллекцию, зацикливая DataReader, а затем добавляя их в коллекцию. Затем позвоните в веб-службу и добавьте эти результаты в коллекцию. Затем у вас будет коллекция, содержащая все ваши результаты, которые вы можете связать с ретранслятором.
IDataReader dr = GetData(sql);
var dataCollection = new List<string>();
while(reader.Read())
{
dataCollection.Add(reader.GetString(1));
}
var extraData = CallWS();
while(extraData.Read())
{
dataCollection.Add(extraData.GetString(1));
}
myRepeater.DataSource = dataCollection;
myRepeater.DataBind();
Нечто подобное выше. Это не так уж много лишнего кода. Я знаю, что вы не передаете результаты в веб-сервис, но я бы посоветовал не делать этого по ряду причин:
1) Дополнительная передача данных. Нет смысла передавать результаты в веб-службу для веб-службы, чтобы просто передать их обратно (если они не нужны как часть запроса).
2) Если веб-служба не может функционировать без набора результатов из другого запроса, то веб-служба не очень хорошо инкапсулирована, и можно утверждать, что внешний запрос действительно принадлежит внутри веб-службы, если он является неотъемлемой частью его функционирования.