【发布时间】:2018-04-18 18:43:38
【问题描述】:
我有一个如下初始化的双数组
double[,] zDataDifference = new double[2048, 2048];
为了将此数据存储在 SQL Server 表列中,我正在尝试将其转换为字符串。最初我想使用下面的代码将我的 double[] 转换为字符串,并且成功地这样做了。
String.Join(",", NICorrectedMean.Select(p => p.ToString()).ToArray());
但是由于double[,] 即(double[,]) 没有Select 方法的定义并且不存在扩展方法...
我不想使用下面的 foreach 循环,因为整个应用程序由于大量数据而挂起。
foreach(double dd in zDataRedDouble)
{
ImageData += String.Join(",", dd);
}
有没有什么快速有效的方法可以将double[*,*] 转换为 C# 中的字符串?
【问题讨论】:
-
你考虑过序列化/反序列化,还是字符串?
-
我尝试了 NewtonSoft 和使用 StringBuilder 而不是 String 的 foreach 循环。 foreach 循环的速度是原来的两倍。
-
我尝试了 Dmitry 的解决方案,而且 foreach 解决方案在很长一段时间内仍然是最快的。
-
@Kevin 将其发布为答案!
-
虽然我质疑将这么多数据保存到数据库字段是否明智,但为什么要将其保存为字符串而不是 BLOB?作为字符串,您需要使用
G17格式说明符来确保往返数据的准确性。在大多数情况下,我希望字符串表示会比存储在 BLOB 中的每双精度 8 个字节消耗更多的存储空间。
标签: c# arrays winforms sql-server-2008