C#:是否可以在SQL数据库中存储十进制数组?

ank*_*shg 2 .net c# sql arrays visual-studio

我正在研究一个实验室项目的应用程序,我正在用C#编写它.它应该从我们用来运行测试的应用程序导出的文本文件中导入结果,到目前为止,我遇到了障碍.

我已经得到程序来保存大约250个十进制值作为一维数组,但后来我试图让数组本身能够保存在SQL数据库中,以便我以后可以检索数组并使用小数用于构建点的图的值.

我需要将整个数组作为单个值导入到数据库中,因为实验室项目有几个样本,每个样本都有自己的250个左右的小数点(也将作为数组存储)

谢谢你的帮助.

编辑:感谢您的快速回复,伙计们但问题是它不仅仅来自只有1次测试的样本.每个样本本身都进行相同的测试,不同的分贝水平超过15次.每个测试都有自己的250个结果,我们有很多标本.

此外,样本已经分配了一个唯一的ID,它将被存储为String而不是Int.我正在计划做的是在每个样本的DB中有一个单独的表,并且每行包含测试的分贝级别的信息并存储序列化的数组...

我认为这样可行,因为我们不需要直接从数据库中访问数据中的各个点; 我只是使用数据库来存储数据内存,因为它有很多.我将查询数据库中的数组和其他信息,然后使用zedgraph绘制数组中的点并同时比较多个样本.

Eri*_*ric 18

简短的回答绝对不是.这是两种完全不同的数据结构.有一些解决方法,比如将它放在blob或逗号分隔文本列中.但是,我真的很讨厌那些.它不允许您在SQL Server级别进行数学运算.

IMO,最好的选择包括在表格中有多个列.添加标识符,以便知道数据点属于哪个阵列.

例如:

AutoId    Specimen    Measurement
   1         A            42
   2         A            45.001
   3         B            47.92
Run Code Online (Sandbox Code Playgroud)

然后,获得结果:

select 
    measurement 
from 
    mytable 
where 
    specimen = 'A'
order by
    autoid asc
Run Code Online (Sandbox Code Playgroud)

编辑:你打算为每个标本做一个单独的250行表吗?这绝对是矫枉过正的.只需使用一个表,将样本标识符作为列(如图所示),并索引该列.SQL Server可以很好地处理数百万行.数据库真的很擅长.为什么不发挥自己的优势而不是尝试重新创建C#数据结构?

  • +1好的答案.我冒昧地在查询中添加了"order by"子句,因为我认为数据点的顺序在这种情况下很重要,虽然很可能autoid将被设置为聚集PK并且很可能是数据库将使用它来对结果进行排序,除非您指定,否则无法保证排序. (2认同)