Добавление элемента в ArrayList, который вложен в HashTable (треплет до конца) - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть этот код, который на внешнем интерфейсе создает зависимые ящики выбора (подкатегории зависят от категории) с использованием LINQ:

foreach (var cat in (from category in KB.Categories
                     orderby category.name
                     select category)) {
    this.categories.Add(cat.id, cat.name);
}
foreach (var sub_cat in (from subcategory in KB.SubCategories
                      orderby subcategory.name
                      select subcategory)) {
    this.subcategories.Add(sub_cat.id, sub_cat.name);
    if (!this.subcategoryCategory.containsKey) {
        this.subcategoryCategory.Add(sub_cat.category_id, new ArrayList());
    }
    // I'd like to put the sub_cat_id at the end of the arraylist
    // for the category_id, but this line doesn't seem to work
    //this.subcategoryCategory[sub_cat.category_id] = sub_cat.id;
}

Как я могу это сделать?

Возможно, есть способ построить гигантский объект JSON вместо трех переменных (категорий, подкатегорий, подкатегорий)?

Есть ли способ лучше / другой , который яполностью пропустил?

PS Исходя из другой парадигмы программирования, я делаю это не стандартным способом ASP.NET (webforms или MVC), но я am , использующий код для созданиязначения.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

JSON.NET может решить эту проблему с ее способностью конвертировать объекты JSON в C # и обратно. См. этот SO вопрос для примера.

0 голосов
/ 04 апреля 2011

Похоже, вы действительно хотите Lookup, например,

var subcategories = KB.SubCategories.ToLookup(subcat => subcat.id,
                                              subcat => subcat.name);

Однако, это не совсем понятно, учитывая, что у вас есть subcategories, subcategoryCategory и categoies, все из которых являются переменными экземпляра, для которых вы не показали нам тип для ... и ваш if В предложении не указано какой ключ он пытается использовать. Сейчас все немного запутано ...

Полагаю, вам следует взглянуть на ToLookup, а также ToDictionary, которые созданы для такого рода вещей.

...