在sql数据库中存储double数组

iqih9akk  于 2021-07-29  发布在  Java
关注(0)|答案(0)|浏览(322)

我有一个模型,需要存储测量值(双倍值)在一个数组中,最大大小约为10。我将始终保存和检索整个数组,因此在保存或获取时不需要对数组进行索引。所需要的只是一个 DateTime 以及测量地点的id。我的第一次尝试,没有考虑太多,是将数组保存为varbinary。但是,由于它将在webapp(blazorwasm)中使用,我猜在通过httpget/post发送值时,已经有一个转换为(json)字符串了——所以我想为什么不一直将它作为字符串保留,直到我需要webapp中的实际值(即在我的自定义httpservice/measurementrepository中)。即:

namespace ModelNamespace
{
    public class MeasurementS
    {
        public int Id { get; set; }
        public int SiteID { get; set; }
        [MaxLength(60)] // maximum of 10 values in array with one decimal and max value of 999.9 (5 digits + one ',' separator = 6*10-1)
        public string Values { get; set; }
        public DateTime DateTime { get; set; }
    }

    public class MeasurementN
    {
        public int Id { get; set; }
        public int SiteID { get; set; }
        public double[] Values { get; set; }
        public DateTime DateTime { get; set; }
    }

    public static class MeasurementNSConverter
    {
        private static readonly char del = ',';

        public static MeasurementN ConvertFromStringToNumber(MeasurementS m)
        {
            return new MeasurementN()
            {
                DateTime = m.DateTime,
                Id = m.Id,
                SiteID = m.SiteID,
                Values = StringToDoubleArray(m.Values)
            };
        }

        public static MeasurementS ConvertFromNumberToString(MeasurementN m)
        {
            return new MeasurementS()
            {
                DateTime = m.DateTime,
                Id = m.Id,
                SiteID = m.SiteID,
                Values = string.Join(del, m.Values.Select(v=> v.ToString("F1")))
            };
        }

        private static double[] StringToDoubleArray(string s)
        {
            var parts = s.Split(del);
            var n = parts.Length;
            var result = new double[n];
            for (int i = 0; i < n; i++)
            {
                result[i] = Convert.ToDouble(parts[i]);
            }
            return result;
        }
    }
}

在webapp(前端)中,执行从measurements(-tring)到measurementn(-umerical)的转换。
我想知道是否有人能看到任何主要的缺点,或者是否有更聪明的方法来做到这一点?我读过关于将值存储为字符串的问题(我猜varbinary对它同样敏感)。
编辑:在本地调试我运行sql server,然后在发布时运行azure sql。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题