Tôi thấy nhiều câu hỏi/câu trả lời về cách chuyển đổi một Hashtable thành một từ điển, nhưng làm thế nào tôi có thể chuyển đổi một từ điển thành một Hashtable?Làm thế nào để chuyển đổi từ điển <> sang Hashtable trong C#?
Trả lời
Cách dễ nhất là sử dụng hàm tạo của Hashtable:
var dictionary = new Dictionary<object, object>();
//... fill the dictionary
var hashtable = new Hashtable(dictionary);
vẻ khá hiếm để muốn làm, nhưng đơn giản nhất:
var hash = new Hashtable();
foreach(var pair in dictionary) {
hash.Add(pair.Key,pair.Value);
}
(giả sử không có bất thường "cụ gõ kiểm tra bình đẳng nhưng không untyped bình đẳng kiểm tra" vv)
Bây giờ chỉ cần bao gồm điều này trong một phương pháp mở rộng 'ToHashTable' và thì đấy! – Dismissile
Thậm chí có một [hàm tạo] (http://msdn.microsoft.com/en-us/library/kdkta2sx.aspx) thực hiện điều tương tự. – Joey
Đây là điều tôi đang nghĩ đến. Đã tự hỏi nếu có một cách không rõ ràng như vậy để làm điều đó. Tuy nhiên, cảm ơn bạn! – jpints14
Dictionary<int, string> dictionary = new Dictionary<int, string>
{
{1,"One"},
{2,"Two"}
};
Hashtable hashtable = new Hashtable(dictionary);
Hãy thử điều này
Bạn có thể muốn xem xét sử dụng quá tải Hashtable
constructor mà phải mất một tham số IEqualityComparer
:
var hashtable = new Hashtable(dictionary, (IEqualityComparer) dictionary.Comparer);
Bằng cách này, Hashtable của bạn sử dụng cùng một Comparer
như từ điển. Ví dụ: nếu từ điển của bạn đã sử dụng khóa chuỗi phân biệt chữ hoa chữ thường, bạn có thể muốn Hashtable
cũng không phân biệt chữ hoa chữ thường. Ví dụ:
var d = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
d.Add("a", "a");
d.Add("b", "b");
bool found;
found = d.ContainsKey("A"); // true
var hashtable1 = new Hashtable(d);
var hashtable2 = new Hashtable(d, (IEqualityComparer) d.Comparer);
found = hashtable1["A"] != null; // false - by default it's case-sensitive
found = hashtable2["A"] != null; // true - uses same comparer as the original dictionary
- 1. LINQ chuyển đổi từ điển <key,value> sang từ điển <value,key>
- 2. Làm thế nào để chuyển đổi từ điển <string, object> để Dictionary <string, string> trong C#
- 3. làm thế nào để chuyển đổi từ điển <động, động> sang từ điển <string, string> bằng cách sử dụng Colllection.ToDictionary()
- 4. Chuyển đổi từ điển <String,Int> sang từ điển <String, SomeEnum> bằng LINQ?
- 5. Chuyển từ điển sang danh sách <KeyValuePair>
- 6. C# Chuyển đổi Danh sách <string> thành Từ điển <string, string>
- 7. làm thế nào để chuyển đổi ListItemCollection (dropdownlist.items) thành một từ điển <string, string>?
- 8. Hashtable to Dictionary <> syncroot.
- 9. C# linq trong Từ điển <>
- 10. Chuyển đổi từ điển <MyType> .ValueCollection to IList <MyType>
- 11. Chuyển đổi từ Mảng sang ICollection <T>
- 12. 'Chuyển đổi' từ điển <string,int> vào Danh sách <object>
- 13. Chuyển đổi chuỗi bị xóa thành từ điển <string, string> trong C#
- 14. Làm thế nào để Chuyển đổi Danh sách <string> để ReadOnlyCollection <string> trong C#
- 15. Làm thế nào để chuyển đổi XML để từ điển
- 16. Chuyển đổi Danh sách <MyObject> thành Từ điển <obj.string, Danh sách <obj.ID>>
- 17. Làm cách nào để ánh xạ <C-/> để chuyển đổi nhận xét trong vim?
- 18. Làm thế nào để chuyển đổi IEnumberable <T> thành ConcurrentBag <T> trong C#?
- 19. Làm thế nào để chuyển đổi System.Linq.Enumerable.WhereListIterator <int> thành Danh sách <int>?
- 20. C# Không thể chuyển đổi từ IEnumerable <Base> thành IEnumerable <Derived>
- 21. Làm thế nào để chuyển đổi từ điển vào chuỗi
- 22. Làm thế nào để chuyển đổi một IEnumerable <Task<T>> để IObservable <T>
- 23. C# Làm thế nào để chuyển đổi một biểu thức <Func <SomeType>> thành biểu thức <Func <OtherType>>
- 24. Làm thế nào để chuyển đổi một chuỗi từ UTF8 sang Latin1 trong C/C++?
- 25. Cách nạc nhất để chuyển đổi từ điển <string, string> thành từ điển <string, object> là gì?
- 26. Làm thế nào để chuyển đổi lớp thành Dictionary <string, string>?
- 27. Làm cách nào để chuyển đổi từ điển Python sang danh sách các bộ dữ liệu?
- 28. Làm cách nào tôi có thể chuyển đổi IEnumerable <T> thành Danh sách <T> trong C#?
- 29. Làm thế nào để chuyển đổi một IEnumerable <IEnumerable <T>> thành IEnumerable <T>
- 30. Làm thế nào để chuyển đổi IQueryable <T> thành Biểu thức <Func <T, bool>>?
Và tại sao bạn cần điều đó? Một Hashtable rất cụ thể trong đó một giá trị được tính trên khóa tạo ra vị trí của giá trị ... và từ điển chỉ là một bộ sưu tập thẳng (khóa, giá trị). Tại sao bạn muốn chuyển đổi từ điển thành hashtable? –
Ở mức độ đơn giản nhất, tôi lười biếng. Đối tượng thuộc loại 'Hashtable' được sử dụng ở nhiều nơi. – jpints14
Điều đó không phải là lý do để sử dụng nó. Từ điển và Hashtables là những con thú khác nhau được sử dụng trong các trường hợp khác nhau. Bạn biết đấy, một Danh sách cũng được sử dụng ở nhiều nơi ... Vậy tại sao không sử dụng? : -s –