如何使用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个列表中得到一个三维数组。。
但我认为使用结构或其他东西会更好,但我不知道如何做到。
如果我正确理解你的问题,试着创建一个这样的类:
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)));
}
}