Oggi mi è capitato di vedere un codice C# di questo tipo dentro un WCF
C#
public DataSet GetData(){
  DataTable tbl = new DataTable();
  tbl.Columns.Add("Desc");
  // codice per riempire il dataset

 return tbl.DataSet;
}
e, ovviamente, il metodo ritornava sempre null. Dico ovviamente perché avendo creato il DataTable non all'interno di un DataSet il riferimento allo stesso non può che essere nullo.

Il codice corretto è:
C#
public DataSet GetDate(){
  DataTable tbl = new DataTable();
  tbl.Columns.Add("Desc");
  // codice per riempire il dataset

  //creo il DataSet vuoto
  DataSet ds = new DataSet();
  //gli aggiungo la tabella precedentemente creata
  ds.Tables.Add(tbl);
  //ritorno il nuovo DataSet con la tabella
 return ds;
}
ovvero creare un DataSet ed aggiungere il DataTable e ritornare il nuovo DataSet.
Potrebbe interessarti anche: