如何使用SqlDataReader读取SQL Server表的三列,并将值存储在双[,]数组中

本文关键字:存储 数组 三列 SQL 读取 SqlDataReader 何使用 Server | 更新日期: 2023-09-27 17:58:07

我在SQL Server中有一个表,它将x, y, z值存储为浮点值,我想获取这些值并将它们存储在三维数组中。

我一直在搜索,我看到人们会在列表中添加值,因为我们不知道我们能得到多少项目,比如:

List<int> list = new List<int>();
using (SqlDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
         list.Add(reader.GetInt32(0));
    }    
}
return list.ToArray();

然而,我不知道是否有可能读取表,并获得和存储元素一次

我试着得到三个这样的列表:

List<double> xValuesList = (from IDataRecord r in dataReader
                     select (double)r["xVal"]
                    ).ToList();
List<double> yValuesList = (from IDataRecord r in dataReader
                     select (double)r["yVal"]
                    ).ToList();
List<double> zValuesList = (from IDataRecord r in dataReader
                     select (double)r["zVal"]
                    ).ToList();

然后循环,从这3个列表中得到一个三维数组。。

但我认为使用结构或其他东西会更好,但我不知道如何做到。

如何使用SqlDataReader读取SQL Server表的三列,并将值存储在双[,]数组中

如果我正确理解你的问题,试着创建一个这样的类:

public class Point3D
{
    public readonly double X;
    public readonly double Y;
    public readonly double Z;
    public Point3D(double x, double y, double z)
    {
        X = x;
        Y = y;
        Z = z;
    }
}

并从表中直接将数据读取到该类的实例列表中,如下所示:

List<Point3D> list = new List<Point3D>();
using (SqlDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        list.Add(new Point3D(reader.GetDouble(0), reader.GetDouble(1), reader.GetDouble(2)));
    }    
}