Массивное значение ключа в ASP.NET с С#

Я новичок в 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
        )

)

Я хочу создать такую ​​же структуру массива в ASP.NET с С#.

Пожалуйста, помогите мне решить эту проблему. Спасибо в Advance.

Ответ 1

Используйте 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 */ };

Edit

С вашим обновлением я хотел бы продолжить и определить правильный тип для инкапсуляции данных

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;

Ответ 2

Если вы ищете сопоставление от string до object:

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"
};

Это действительно зависит от того, чего вы пытаетесь достичь - большего изображения.

EDIT: если у вас есть одни и те же "ключи" для нескольких значений, я бы, вероятно, создал для этого определенный тип - неясно, какой тип сущности это предназначен для представления, но вы должны создать класс для модели его и при необходимости добавить к нему соответствующее поведение.

Ответ 3

Ассоциативный массив может быть представлен в С# с использованием словаря. Его Enumerator.Current вернет keyValuePair.

Итак, ваш массив хотел бы

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

Ответ 4

Попробуйте это

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");