why don't you simply create datacontracts on WCF side to send the data instead of using stream and file operations? Also instead of datasets if you could consume those data contracts directly to bind to some datagrid or some listview etc that should work as per my understanding....
eg.
[ DataContract]
public class class Employee
{
[DataMember]
Name{get;set;}
[DataMember]
ID{get;set;}
}
[CollectionDataContract]
public class Employess:List<employee>
{
}
public Employees GetAllEmployees();
</employee>