public DataSet MultiShardQuery(string commandText)
        {
            DataSet _ds = new DataSet();

            try
            {
                RetryPolicy.DefaultExponential.ExecuteAction(() =>
                {
                    using (MultiShardCommand cmd = new MultiShardConnection(lsm.GetShards(), shardConnectionString).CreateCommand())
                    {
                        cmd.CommandText      = commandText;
                        cmd.CommandType      = CommandType.Text;
                        cmd.ExecutionOptions = MultiShardExecutionOptions.None;
                        //04/23/2015 by Mark Berman - switched to Partial results versus CompleteResults as timeout exception was being thrown
                        cmd.ExecutionPolicy = MultiShardExecutionPolicy.PartialResults;
                        using (MultiShardDataReader sdr = cmd.ExecuteReader())
                        {
                            if (sdr.Read())
                            {
                                // the multi-shard query does not return a dataset or datarow.
                                // we have to manually re-create a table structure, then fill it with data.
                                object[] sqlValues = new object[sdr.FieldCount];
                                sdr.GetSqlValues(sqlValues);
                                DataTable dtValues = new DataTable();
                                foreach (var column in sqlValues)
                                {
                                    dtValues.Columns.Add(new DataColumn {
                                        DataType = column.GetType()
                                    });
                                }
                                _ds.Tables.Add(dtValues);
                                _ds.Tables[0].Rows.Add(sqlValues);
                                while (sdr.Read())
                                {
                                    sdr.GetSqlValues(sqlValues);
                                    _ds.Tables[0].Rows.Add(sqlValues);
                                }
                            }
                        }
                    }
                });
            }
            catch { _ds = null; }
            return(_ds);
        }