用c#在asp.net中实现数组键值

本文关键字:实现 数组 键值 net asp | 更新日期: 2023-09-27 18:13:06

我是c#的asp.net新手。现在我需要解决一个问题。

在PHP中,我可以创建这样一个数组:
$arr[] = array('product_id' => 12, 'process_id' => 23, 'note' => 'This is Note');
//Example
Array
(
    [0] => Array
        (
            [product_id] => 12
            [process_id] => 23
            [note] => This is Note
        )
    [1] => Array
        (
            [product_id] => 5
            [process_id] => 19
            [note] => Hello
        )
    [2] => Array
        (
            [product_id] => 8
            [process_id] => 17
            [note] => How to Solve this Issue
        )
)

我想用c#在asp.net中创建相同的数组结构。

请帮我解决这个问题

用c#在asp.net中实现数组键值

使用Dictionary<TKey, TValue>快速查找基于键(字符串)的值(您的对象)

var dictionary = new Dictionary<string, object>();
dictionary.Add("product_id", 12);
// etc.
object productId = dictionary["product_id"];

为了简化Add操作,可以使用集合初始化语法,如

var dictionary = new Dictionary<string, int> { { "product_id", 12 }, { "process_id", 23 }, /* etc */ };

编辑

随着你的更新,我将继续定义一个适当的类型来封装你的数据

class Foo
{
    public int ProductId { get; set; }
    public int ProcessId { get; set; }
    public string Note { get; set; } 
}

然后创建该类型的数组或列表。

var list = new List<Foo>
           {
                new Foo { ProductId = 1, ProcessId = 2, Note = "Hello" },
                new Foo { ProductId = 3, ProcessId = 4, Note = "World" },
                /* etc */
           };

然后你有一个强类型对象列表,你可以迭代,绑定到控件,等等。

var firstFoo = list[0];
someLabel.Text = firstFoo.ProductId.ToString();
anotherLabel.Text = firstFoo.Note;

如果您正在寻找从stringobject的映射:

Dictionary<string, object> map = new Dictionary<string, object> {
    { "product_id", 12 },
    { "process_id", 23 },
    { "note", "This is Note" }
};

或者,如果这只是传递数据的一种方式,也许你想要一个匿名类:

var values = new {
    ProductId = 12,
    ProcessId = 23,
    Note = "This is Note"
};

这真的取决于你想要达到的目标——更大的蓝图。

编辑:如果你有多个值相同的"键",我可能会为此创建一个特定的类型-目前尚不清楚这意味着代表什么样的实体,但你应该创建一个类来建模它,并根据需要添加适当的行为。

试试这个

System.Collections.Generic.Dictionary<string, object>[] map = new System.Collections.Generic.Dictionary<string, object>[10];
map[0] = new System.Collections.Generic.Dictionary<string,object>();
map[0].Add("product_id", 12);
map[0].Add("process_id", 23);
map[0].Add("note", "This is Note");
map[1] = new System.Collections.Generic.Dictionary<string,object>();
map[1].Add("product_id", 5);
map[1].Add("process_id", 19);
map[1].Add("note", "Hello");

关联数组可以在c#中使用Dictionary表示。其枚举器。Current将返回一个keyValuePair。

那么你的数组应该是

var associativeArray = new Dictionary<string, string>(){ {"product_id", "12"}, {"process_id"," 23", {"note","This is Note"}};