【发布时间】:2019-01-04 00:18:45
【问题描述】:
我正在尝试开发一个使用网站数据库的桌面应用程序(winforms)。我目前正在开发本地数据库以避免在开发时浪费主机流量。
我遇到了这样一个场景,我在谷歌上搜索了 2 天,但找不到关于如何实现特殊类型数组的具体答案。
目前我正在尝试以数组的形式从数据库中检索用户信息,但我还需要一些项作为数组,而其他项则保留为字符串。
在 PHP 中我使用类似的东西:
$user["username"] = $result["username"];
$user["name"] = $result["name"];
$user["lastname"] = $result["lastname"];
等等。问题来自从数据库中检索电话号码的查询,因为大多数用户至少有 2 个号码(家庭和手机)
foreach ($phones as $type => $phone) {
$user["phone"][$type] = $phone;
}
其中 $type 是电话类型(家庭线路、主单元、工作单元、寻呼机等),$phone 包含号码。 所以,就我搜索和阅读的所有内容而言,我已经了解了这一点
Dictionary<string, string>可以使用第一个字符串作为数组键,第二个字符串作为数组值,但是第二个字符串不能转换为数组
Dictionary<string, List<string>> 可以创建二级数组,但不能将字符串存储为值。 (Can't convert 'string' into 'System.Collections.Generic.List<string>')
那么,实现这一特定场景的最佳方法是什么?如何让数组同时保存字符串和数组数据?
【问题讨论】:
-
就个人而言,我不会使用 PHP 作为从 C# 数据库中检索数据的示例。我会将数据读入支持所需格式的自定义类中。像
$user["phone"][$type]这样的东西基本上是一个嵌套的Dictionary,这不是我想在代码中看到的。 -
您可能正在寻找一个数组数组,也称为“锯齿状数组”。这可以适合您想要的任何自定义对象。这可能会有所帮助docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/…
-
foreach行明确显示我正在使用来自$user的已分配键中的键值。很抱歉不知道 C# 用语,但如果您仔细阅读,key => value格式非常明确。
标签: c# list dictionary multidimensional-array