web-dev-qa-db-ja.com

ASP C#を使用した.NETの配列キー値

ASP .NET with C#を初めて使用する場合、1つの問題の解決策が必要です

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 with C#で同じ配列構造を作成したい。

この問題の解決を手伝ってください。前もって感謝します。

13
rkaartikeyan

使う 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;
26
Anthony Pegram

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

それは本当にあなたが達成しようとしていること、つまり全体像に依存します。

編集:複数の値に同じ「キー」がある場合、おそらくこれに特定のタイプを作成します-これが表すエンティティの種類は明確ではありませんが、それをモデル化するクラスを作成する必要があります。必要に応じて適切な動作を追加します。

4
Jon Skeet

これを試して

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

連想配列は、辞書を使用してC#で表すことができます。そのEnumerator.CurrentはkeyValuePairを返します。

だからあなたの配列は

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