If the class definition for the object you want to send is accessible to both the client and server - say, defined in a common class library - you can serialize it to binary data, send it over the connection, and deserialize it. Serializable classes are pretty easy to get into and out of binary, XML and JSON formats.
See http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=209
I haven't tried this with a dataset, but I don't foresee any problems. You may also consider serializing to XML if your application requires it - for instance, if you're communicating with a non-.net application on another platform.
Note: Josiah Peters' linked example code seems much cleaner than the link I referenced.