使用可变尺寸即时在C#中创建二维双精度数组

时间:2019-04-26 19:04:08

标签: c# arrays tsql double

我有很多非常大的矩阵(有时是双精度的,但也许是其他类型的),它们的尺寸可以变化。我想将整个数组存储为varbinary(max)

我可以很好地存储记录(我认为)。但是,当我读取数据时,我不知道如何创建尺寸可变的c#数组。

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 []数组...我想我可以先查询行和列,然后计算长度...这似乎有点钝,但是可行。但是,即使我得到了byte []数组,我也想重建一个2dim矩阵。

直觉上,我想写:

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

但是当尺寸不能为变量时,c#似乎并不喜欢。

0 个答案:

没有答案