Объединение linq2sql с классами XElement, что-то вроде:
var xmlContacts =
new XElement("contacts",
(from c in context.Contacts
select new XElement("contact",
new XElement
{
new XElement("name", c.Name),
new XElement("phone", c.Phone),
new XElement("postal", c.Postal)
)
)
).ToArray()
)
);
Linq2sql извлечет данные за один вызов БД, и обработка XML будет выполнена на бизнес-сервере. Это лучше распределяет нагрузку, поскольку сервер SQL не выполняет всю работу.