2011-11-01 35 views
10

Tôi mới vào ASP .NET với C# Bây giờ tôi cần giải pháp cho một vấn đềMảng Giá trị chính trong ASP .NET với C#

trong PHP tôi có thể tạo ra một mảng như thế này

$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 
     ) 

) 

Tôi muốn thế nào để tạo cùng một cấu trúc mảng trong ASP. NET với C#.

Vui lòng giúp tôi giải quyết vấn đề này. Cảm ơn trước.

Trả lời

20

Sử dụng số Dictionary<TKey, TValue> để tra cứu nhanh giá trị (đối tượng của bạn) dựa trên khóa (chuỗi của bạn).

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

object productId = dictionary["product_id"]; 

Để đơn giản hóa hoạt động Add, bạn có thể sử dụng bộ sưu tập khởi cú pháp như

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

Sửa

Với bản cập nhật của bạn, tôi sẽ đi trước và định nghĩa một thích hợp nhập để đóng gói dữ liệu của bạn

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

Sau đó tạo một mảng hoặc danh sách loại đó.

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

Và sau đó bạn có một danh sách các đối tượng mạnh mẽ, đánh máy, bạn có thể lặp lại kết thúc, ràng buộc để kiểm soát vv

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

Cám ơn Trả lời nhanh bạn, Mảng ( [0] => Array ( [product_id] => 12 [process_id] => 23 [note] => Đây là Lưu ý ) [1] => Array ( [product_id] => 5 [PROCESS_ID] => 19 [note] => Hello ) [2] => Array ( [product_id] => 8 [PROCESS_ID] => 17 [note] => làm thế nào để giải quyết vấn đề này ) ) tôi muốn làm như thế này ... – rkaartikeyan

+0

Nếu bạn muốn làm điều đó, tôi chỉ đơn giản là sẽ xác định một lớp để đóng gói dữ liệu của bạn và chỉ có một mảng hoặc danh sách các cá thể của lớp đó. Câu trả lời của Jon cho thấy có lẽ một loại vô danh, đó cũng là một lựa chọn. –

+0

chắc chắn thưa ông, nó sẽ là một trợ giúp lớn cho tôi. – rkaartikeyan

4

Nếu bạn đang tìm kiếm một ánh xạ string-object:

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

Hoặc, có thể bạn muốn một lớp ẩn danh, nếu đây chỉ là cách truyền dữ liệu xung quanh:

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

Nó thực sự phụ thuộc vào những gì bạn đang cố gắng đạt được - bức tranh lớn hơn. EDIT: Nếu bạn có cùng "khóa" cho nhiều giá trị, có thể tôi sẽ tạo một loại cụ thể cho việc này - không rõ loại thực thể này có ý nghĩa gì để đại diện, nhưng bạn nên tạo một lớp mô hình hóa nó và thêm hành vi thích hợp vào nó theo yêu cầu.

+0

Cảm ơn bạn đã trả lời nhanh, tôi đã sửa đổi câu hỏi, vui lòng xem sir. Trên thực tế tôi đang lưu trữ product_id, process_id, lưu ý vào mảng cho mỗi bài đăng biểu mẫu. Cuối cùng tôi sẽ thao tác mảng và lưu trữ vào cơ sở dữ liệu. – rkaartikeyan

+1

@ user707852: Điều đó không thực sự thay đổi câu trả lời của tôi - bạn có thể áp dụng câu trả lời của tôi cho cả hai trường hợp. Thành thật mà nói, tôi nghi ngờ bạn nên tạo ra một loại để đóng gói các giá trị này ... –

+0

Cảm ơn bạn đã dành thời gian – rkaartikeyan

1

Mảng kết hợp có thể được biểu diễn bằng C# bằng từ điển. Enumerator.Current của nó sẽ trả về một keyValuePair.

Vì vậy, mảng bạn muốn

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

Cảm ơn thời gian của bạn – rkaartikeyan

1

Hãy thử điều này

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

Cảm ơn thời gian của bạn – rkaartikeyan

+0

Tôi nghĩ 'Danh sách 'có ý nghĩa hơn một mảng ở đây. – svick

+0

Oups vâng với câu hỏi được chỉnh sửa, cấu trúc tương tự, nó sẽ làm cho ý nghĩa hơn rất nhiều quá sử dụng câu trả lời ở trên và nó là thanh lịch hơn nhiều. – Khan

Các vấn đề liên quan