如何使用C#从数据库中读取数组字段?

6
我正在使用C#和PostgreSQL。在数据库中,我有一个名为test的表,在这个表中我有一个名为arr的列,它的数据类型是double[],我存储了多条记录,如{1, 1, 2, 3, 0, 5, 1, 4}。现在,如何将这些记录返回到C#程序并存储在一个列表中,例如List<double[]> arr1 = new List<double[]>();
谁能帮助我?

3
可能是在 C# 中读取数组列的重复问题。 - Crozin
你应该添加你的代码,这样我们才能帮助你,因为有很多种方法可以做到这一点,例如使用Linq,直接运行查询语句,从服务提供商获取数据等。 - Mohsen Kamrani
2个回答

6
对于数组数据类型,你只需要将结果转换为双精度数组即可:
NpgsqlConnection conn = new NpgsqlConnection(connectionString);
conn.Open();

NpgsqlCommand cmd = new NpgsqlCommand("select arr from test", conn);
NpgsqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    double[] myArray = (double[])reader.GetValue(0);
    // do your bidding
}

reader.Close();

--编辑于2021年2月18日--

从Npgsql 5.0开始,上述方法大部分时间都是有效的,但文档指定了一种不同的提取数组数据类型的方式:

double[] myArray = reader.GetFieldValue<double[]>(0)

0

这里有一个教程,关于如何在你的C# (.NET)中使用PostgreSQL: 使用PostgreSQL在你的C# (.NET)中

你需要告诉我们一些具体的问题,这样我们才能帮助解决问题。


我正在使用以下代码:List arr1 = new List(); foreach (DataRow row in ds.Tables["test"].Rows) { arr1.Add(row["arr"].Select(s => Double.Parse(s)).ToList()); }但是,我遇到了错误! - zana
错误 2 'System.Linq.Queryable.Select<TSource,TResult>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,TResult>>)' 是一个“方法”,在给定的上下文中无效。C:\Users\PCLORD\Desktop\ShowImg\ShowImg\Default.aspx.cs 103行 39列 ShowImg - zana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接