在C#项目中从PostgreSQL检索Ruby on Rails存储的数组
读取PostgreSQL中的二维字符串数组(C# + Npgsql)
嘿,我来帮你搞定这个问题!你在Ruby on Rails里存到PostgreSQL的二维字符串数组,用Npgsql在C#里其实很好读取——因为Npgsql原生支持PostgreSQL的数组类型,不用自己手动去解析字符串格式。
核心解决方案:用Npgsql的类型化读取方法
PostgreSQL里的text[][]类型(也就是你存的二维字符串数组),对应C#里的string[][]类型。你可以直接用GetFieldValue<T>方法精准读取,代码修改起来很简单:
NpgsqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 替换成你的数组列的索引,或者直接用列名:reader.GetFieldValue<string[][]>("your_array_column_name") string[][] twoDArray = reader.GetFieldValue<string[][]>(1); // 这里是验证输出的示例,你可以根据自己的需求处理数组数据 Console.WriteLine($"列名:{reader.GetName(1)}"); foreach (var innerRow in twoDArray) { Console.WriteLine(string.Join("\t", innerRow)); } }
备选情况:如果数组是以字符串形式存储的
要是你在Rails里不小心把数组存成了普通文本字符串(比如看起来像数组的JSON格式字符串),那可以用JSON序列化工具来解析:
using System.Text.Json; // ... while (reader.Read()) { string arrayText = reader.GetString(1); string[][] twoDArray = JsonSerializer.Deserialize<string[][]>(arrayText); // 后续的数组处理逻辑和上面一致 }
小提醒
- 确保你安装的Npgsql NuGet包是较新版本(3.0以上就支持数组类型,现在主流版本都没问题)
- 确认PostgreSQL里的列类型是
text[][]或varchar[][],而不是普通的text/varchar字段
这样就能顺利读取到你需要的二维数组数据啦!
内容的提问来源于stack exchange,提问作者Umes Bastola
相关产品推荐
相关产品推荐

