JSON.net сериализуется напрямую из oledbconnection

В настоящее время у меня есть обработчик, который берет путь к файлу и имя табуляции для файла Excel, обрабатывает файл в таблицу данных и затем сериализует таблицу в строку json для возврата. Это работает, пока я не попытаюсь обработать большой файл, а затем получаю исключение нехватки памяти.

Я думал, что это уменьшило бы использование памяти, если бы я сначала не загрузил все в таблицу данных, а вместо этого загрузил прямо в строку json. Однако я не смог найти никаких примеров того, как это сделать.

Могу ли я сериализовать непосредственно из OleDbConnection в строку? Как?

    public void ProcessRequest(HttpContext context)
    {
        string path = context.Request["path"];
        string tableNames = context.Request["tableNames"];

        string connectionString = string.Empty;
        if (path.EndsWith(".xls"))
        {
            connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;
                Data Source={0};
                Extended Properties=""Excel 8.0;HDR=YES;IMEX=1""", path);
        }
        else if (path.EndsWith(".xlsx"))
        {
            connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;
                Data Source={0};
                Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1""", path);
        }
        DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

        DbDataAdapter adapter = factory.CreateDataAdapter();
        OleDbConnection conn = new OleDbConnection(connectionString);
        conn.Open();

        DataTable tmp = new DataTable();

        DbCommand selectCommand = factory.CreateCommand();

        selectCommand.CommandText = String.Format("SELECT * FROM [{0}]", tableNames);
        selectCommand.Connection = conn;
        adapter.SelectCommand = selectCommand;


        adapter.Fill(tmp);
        string tabdata = JsonConvert.SerializeObject(tmp);
        context.Response.Write(tabdata);
    }

Ответы на вопрос(1)

Ваш ответ на вопрос