Создание 2D массива парных чисел в c # на лету с переменными размерами - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть несколько очень больших матриц (иногда двойных, но, возможно, других типов), которые могут иметь различные размеры.Я хотел бы сохранить весь массив как varbinary (max)

Я могу хранить запись очень хорошо (я думаю).Однако, когда я прихожу, чтобы прочитать данные, я не знаю, как создать массив AC # с переменными измерениями.

Таблица SQL выглядит следующим образом:

create table test_varbinary_table(
    name varchar(256) null,
    vb_data varbinary(max) null
)

Хранимая процедурачтобы записать данные здесь:

CREATE PROCEDURE insertData 
    @name varchar(256),
    @data varbinary(max)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    INSERT INTO test_varbinary_table (name, vb_data) VALUES (@name, @data);
END

C # здесь:

   double[,]  dblArySampleData = new double[2,3]  { {7.0, 3.0, 1.3 }, {8.333, 4.1211, 8.999 } };
    var result = new byte[6 * sizeof(double)];
    Buffer.BlockCopy(dblArySampleData, 0, result, 0, result.Length);

    try
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand("dbo.insertData", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@name", "foo");
                cmd.Parameters.AddWithValue("@data", result);
                cmd.ExecuteNonQuery();
            }
            conn.Close();
        }
        textBox1.Text = "No Failure!";
    } catch (Exception ex)
    {
        textBox1.Text = "Error: " + ex.Message;
    }

Итак, теперь я хочу прочитать чертову вещь, но я не знаю, как читатьЭто.Даже не уверен, как начать.Я мог бы хранить измерения вместе с таблицей, так что это два новых поля, скажем, 'строки' и 'столбцы'.

Но мне нужно иметь возможность создать массив байтов [] длины, которую я не задал 'Не знаю ... Я думаю, я мог бы сначала запросить строки и столбцы, а затем вычислить длину ... это кажется тупым, но выполнимым.Но даже если я получу массив byte [], я хочу восстановить 2-мерную матрицу.

Интуитивно я хочу написать:

double[,] dblArySampleData = new double[rows, cols];

, но, похоже, c # не нравится, когда размеры не могут быть переменными.

...