2012-06-05 39 views
5

Chúng tôi đã có một Hashtable là một tham chiếu chỉ đọc vào một danh sách các giá trị như thế này:Cơ cấu tổ chức 3 cột và tra cứu cho một hàng nhanh chóng bởi bất kỳ cột

internal static readonly Hashtable relationcodeAcodeB = new Hashtable 
{ 
    {"149", "23"}, 
    {"139", "17"} 
} 

Bây giờ chúng ta cần một cấu trúc có thể chứa 3 giá trị (cột) và tìm kiếm một giá trị nhanh chóng bởi bất kỳ khác 2.

Something như thế này:

internal static readonly Hashtable relationcodeAcodeBcodeC = new Hashtable 
{ 
    {"149", "23", "xx"}, 
    {"139", "17", "xxx"} 
} 
string codeB=relationcodeAcodeBcodeC[codeA="149"]["codeB"]; 
+0

Có lý do nào khiến bạn không sử dụng bộ sưu tập chung không? –

+1

Đây thực sự là một câu hỏi khá thú vị (upvote!); rõ ràng là có nhiều giải pháp cho điều này nhưng tôi tò mò muốn biết cách nhanh nhất/sạch nhất hoặc thậm chí chính xác để làm điều này là gì. BTW bạn nên làm rõ: tiêu đề được nói bởi bất kỳ cột nào trong khi câu hỏi được đọc bởi bất kỳ câu hỏi nào khác ** hai **. Khá khác biệt. – pyrocumulus

+0

Đồng ý với Cloud - đây có thể là một câu hỏi thú vị nếu bạn làm rõ. –

Trả lời

2

Giả sử đối tượng của bạn có ba đặc tính codeA, codeB và codec, bạn duy trì tab ba băm les, như vậy:

Dictionary<string, MyObj> dictA, dictB, dictC; 

Khi tạo mới MyObj, bạn thêm nó vào từ điển ba:

dictA[obj.codeA] = obj; 
dictB[obj.codeB] = obj; 
dictC[obj.codeC] = obj; 

Nhìn lên là rất dễ dàng. Ví dụ của bạn sẽ được mã hóa là dictA["149"].codeB

Giữ tất cả mọi thứ gọn gàng trong một lớp tra cứu lớn, tất nhiên.

+0

Không có vẻ quá phức tạp vì chỉ cần có một cột khác? điều này có nghĩa là có 3 từ điển khác nhau và điền chúng tách biệt ... – VSP

+0

Nó phụ thuộc, bạn có muốn tìm kiếm hiệu quả không? Bằng cách này, tra cứu được thực hiện trong O (1). Và nó thực sự không khó để thực hiện. Nếu bạn muốn quét danh sách các đối tượng và tìm đúng đối tượng, bạn sẽ kết thúc với một giải pháp O (N) dài hơn một chút. – zmbq

+0

Im thực hiện nó như thế này như là một thử nghiệm, nhưng nó nhận được rất nhiều dòng mã để khởi tạo hơn hashtable và không thể được readonly nữa ... có vẻ lạ rằng trường hợp này đã không được xử lý bởi một đối tượng phù hợp hơn cho đến bây giờ – VSP

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