Если определение класса для объекта, который вы хотите отправить, доступно как клиенту, так и серверу, скажем, определенному в общей библиотеке классов, вы можете сериализовать его в двоичные данные, отправить по соединению и десериализовать. Сериализуемые классы довольно легко доступны в двоичном, XML и JSON форматах.
См. http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=209
Я не пробовал это с набором данных, но я не предвижу никаких проблем. Вы также можете рассмотреть возможность сериализации в XML, если это требуется вашему приложению, например, если вы общаетесь с приложением, отличным от .net, на другой платформе.
Примечание: пример кода Джозии Петерса выглядит намного чище, чем ссылка, на которую я ссылался.