/// <summary>
        /// Returns bytes of specified <see cref="DataSet"/> instance after converting it into <see cref="CsvDataSet"/>.
        /// </summary>
        /// <param name="ds">Input <see cref="DataSet"/> instance.</param>
        /// <returns>Resulting bytes array.</returns>
        public static byte[] GetCsvBytes(DataSet ds)
        {
            if (ds == null)
            {
                throw new ArgumentNullException("ds");
            }
            string resultTempFileName = GetTempCsvFileName();
            byte[] bytes = null;

            try
            {
                ds.Clone(String.Format(CultureInfo.InvariantCulture, "msds:csv?file={0}&openMode=create&appendMetadata=true", resultTempFileName));
                bytes = File.ReadAllBytes(resultTempFileName);
            }
            finally
            {
                if (resultTempFileName != null)
                    File.Delete(resultTempFileName);
            }

            return bytes;
        }