C# 如何通过定义每个条目的键和值在C中创建数组?

C# 如何通过定义每个条目的键和值在C中创建数组?,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,我需要创建一个数组,从数据库中读取数据,然后创建一个包含2列的数组 为了在PHP中实现这一点,下面是我所做的 private function _getSystemRules() { $rules = $this->db->getDataSet('SELECT SQL_CACHE section_name, privilege_key, privilege_value FROM user_privileg

我需要创建一个数组,从数据库中读取数据,然后创建一个包含2列的数组

为了在PHP中实现这一点,下面是我所做的

private function _getSystemRules()
{
    $rules = $this->db->getDataSet('SELECT SQL_CACHE section_name, privilege_key, privilege_value
                                    FROM user_privileges
                                    WHERE status = 1
                                    ORDER BY section_name');

    foreach($rules as $rule) {
        $this->rolesList[$rule['section_name']][$rule['privilege_key']] = $rule['privilege_value'];
    }
}
更新

最终的数组将如下所示

Array
(
    [accounts] => Array
        (
            [can_own_account] => 4
            [can_view_summary] => 64
            [can_update_critical] => 32
            [can_update_important] => 16
            [can_update_basic] => 8
            [can_change_owner] => 2
            [can_use] => 1
        )

    [account_phones] => Array
        (
            [can_add] => 2
            [can_edit] => 8
            [can_change_status] => 4
            [can_view] => 1
            [can_change_primary] => 16
        )

    [contacts] => Array
        (
            [can_change_status] => 16
            [can_change_global] => 8
            [can_add] => 32
            [can_view] => 2
            [can_change_primary] => 1
            [can_edit] => 4
        )

    [manage_accounts] => Array
        (
            [can_use] => 1
            [can_update_owner] => 2
            [can_update_dnc_status] => 4
            [can_update_internally_blocked_status] => 8
        )

    [manage_phone_calls] => Array
        (
            [can_change_owner] => 4
            [can_purge] => 8
            [can_change_due_datetime] => 16
            [can_use] => 1
            [can_approve] => 2
            [can_change_urgency_level] => 32
        )

    [notification] => Array
        (
            [can_use] => 1
        )

    [other_contacts] => Array
        (
            [can_save_contact] => 128
            [can_purge_self_created_notes_only] => 32
            [can_purge_all_notes] => 16
            [can_edit_self_created_notes_only] => 8
            [can_create] => 2
            [can_use] => 1
            [can_edit_all_notes] => 4
            [can_save_note] => 64
        )

    [phone_calls] => Array
        (
            [can_use] => 1
            [can_view] => 2
            [can_own_phone] => 4096
            [can_view_client_history] => 2048
            [can_view_history] => 1024
            [can_unpurge] => 512
            [can_edit_completed] => 256
            [can_complete_owned_only] => 64
            [can_edit_open] => 128
            [can_complete_any] => 32
            [can_purge] => 16
            [can_insert] => 8
            [can_update] => 4
            [can_create_call_for_others] => 8192
            [can_create_new_call] => 16384
        )

    [phone_call_views] => Array
        (
            [can_use] => 1
            [can_create] => 2
            [can_list_active] => 4
            [can_list_inactive] => 8
            [can_edit] => 16
            [can_disable] => 32
            [can_enable] => 64
        )

    [system_security] => Array
        (
            [can_change_client] => 1
        )

    [voice_of_client] => Array
        (
            [can_edit] => 4
            [can_submit] => 2
            [can_use] => 1
            [can_purge] => 8
            [can_view_completed] => 16
        )

)
根据下面的反馈,我正在尝试使用Dictionary类

这是我当前的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using MySql.Data.MySqlClient;

namespace POS
{
    class Roles
    {
        static readonly Regex binary = new Regex("^[01]{1,32}$", RegexOptions.Compiled);
        private Dictionary<string, string[]> permissionList = new Dictionary<string, string[]>();


        public Roles()
        {
            this._definePermissions();
        }

        private int _BinToInt(string str)
        {
            int val = -1;

            if (binary.IsMatch(str))
            {
                val = Convert.ToInt32(str, 2);
            }

            return val;
        }

        private string _IntToBin(int number)
        {
            return Convert.ToString(number, 2);
        }

        private void _definePermissions()
        {
            var db = new dbConnetion();

            string sql =   " SELECT SQL_CACHE sectionName, permissionKey, permissionValue "
                         + " FROM role_permissions "
                         + " WHERE status = 'enabled' "
                         + " ORDER BY sectionName ";

            foreach (var i in db.getData(sql, null, r => new SystemPermissions()
                                                           {
                                                                 sectionName = r["sectionName"].ToString()
                                                               , permissionKey = r["permissionKey"].ToString()
                                                               , permissionValue = r["permissionValue"].ToString()
                                                           }
                                           )
                    )
            {
                permissionList["sectionName"] = new[] {i.sectionName};
                permissionList["permissionValue"] = new[] {this._BinToInt(i.permissionValue).ToString()};

            }
        }

    }

    class SystemPermissions{
        public string sectionName;
        public string permissionKey;
        public string permissionValue;
    }

}
如何使用c完成同样的事情

如何通过定义每个条目的键和值在C中创建数组

在.NET中,这就是类。例如:

var dictionary = new Dictionary<string, string>();
dictionary["foo"] = "bar";
dictionary["baz"] = "bazinga";
您正在寻找C语言中的

,您可以使用字典:


你试过谷歌c键值吗?我不确定我是否清楚这一点。但是我如何定义多维数组,其中第一个键是section\u name id,第二个键是privilege\u key,位置=privilege\u值?字典的键可以是任何对象。例如,您可以拥有一个具有两个属性的自定义对象:Key1和Key2。那么它将是dictionary[foo]=new someCustomClass{Key1=section\u name,Key2=privilege\u value}?在您的示例中,您使用了一个自定义类作为值,这也是可能的。我已经更新了我的问题,以显示最终数组的外观
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("a", "c");
dictionary.Add("c", "d");