2012-06-01 3 views
2

, если у меня есть несколько значений для одной клавиши, то, как добавить его в хэш-таблице , например:Hashtable с различными значениями для одной клавишей

    Hashtable hs = new Hashtable(); 
         hs["id"]= "x001.xhtml"; 
         hs["media-type"]= "application/xhtm+xml"; 
         hs["href"]= "text/001.xhtml"; 

         hs["id"]= "x002.xhtml"; 
         hs["media-type"]= "application/xhtm+xml"; 
         hs["href"]= "text/002.xhtml"; 

        hs["id"]= "x003.xhtml"; 
        hs["media-type"]= "application/xhtm+xml"; 
        hs["href"]= "text/003.xhtml"; 

это принимает только последнюю группу в хэш-таблицу, т.е.

     hs["id"]= "x003.xhtml"; 
        hs["media-type"]= "application/xhtm+xml"; 
        hs["href"]= "text/003.xhtml"; 

как решить это .... спасибо заранее !!

+0

Похоже, что вы хотите получить список объектов или Словарь для меня – IanNorton

ответ

9

Хеш является определяется как имеющие уникальные ключи, и индексатор заменяет существующие значения. Похоже, что вы на самом деле хотите получить список объектов, т.е.

var list = new List<YourType> { 
    new YourType { Id = "x001.xhtml", MediaType = "...", Href = "..." }, 
    new YourType { Id = "x002.xhtml", MediaType = "...", Href = "..." }, 
    new YourType { Id = "x003.xhtml", MediaType = "...", Href = "..." } 
}; 

с

public class YourType { 
    public string Id {get;set;} 
    public string MediaType {get;set;} 
    public string Href {get;set;} 
} 

(или аналогичный)

+2

Это чрезвычайно разочарование, чтобы увидеть, что вы придумали полный ответ и собираете upvotes, пока я все еще печатаю. +1 тем не менее. – skolima

+2

@ skolima Я постараюсь ввести медленнее. Сожалею. –

+0

Глядя на вид данных, вопрос показывает словарь , вероятно, будет лучшим – IanNorton

1

Решить вашу проблему

Вы не используете правильный класс для YOUT модели. Что вам нужно, это List<Hashtable>

Улучшение кода

Рассмотрим также написание класса для того, что вы храните в HashTable.

Лучше всего было бы использовать List<YourMedia>

Тогда ваш код будет выглядеть следующим образом:

List<Media> medias = new List<Media>(); 
media.add(new Media("x001.xhtml", "application/xhtm+xml", "text/001.xhtml") 
[...] 
Смежные вопросы