gracias por tu respuesta,tenias razon con el metodo ds1,devolvia mal el dataset en el return y al no darme error de compilacion pensaba que estaba correcto.
En el tema del mime.
Si pongo con text/plain me genera un txt ==> mydata.csv.txt
si pongo lo que tenia yo , application/csv ==> mydata.csv ,me lo hace bien.
Un saludo.