C# 向嵌套在哈希表中的ArrayList添加元素(turtles一直向下)

C# 向嵌套在哈希表中的ArrayList添加元素(turtles一直向下),c#,json,arraylist,nested,hashtable,C#,Json,Arraylist,Nested,Hashtable,我有这段代码,在前端,它将使用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

我有这段代码,在前端,它将使用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对象,而不是三个变量(categories、subcategoritycategory、subcategories)

有没有一种我完全错过的更好/不同的方法


另外,我不是用标准的ASP.NET(webforms或MVC)方式,而是用codebehind来生成值。看起来你实际上想要一个
查找
,例如

var subcategories = KB.SubCategories.ToLookup(subcat => subcat.id,
                                              subcat => subcat.name);
但是,考虑到您有
子类别
子类别
类别
,这三个变量都是实例变量,您没有向我们显示它们的类型,所以还不太清楚。。。并且您的
if
子句没有指定要使用的键。现在一切都有点混乱


我的猜测是,您应该看看和,它们是为这类事情而设计的。

可能会解决这个问题,因为它能够将JSON对象转换为C#和C#。例如,请参阅。

既然您使用的是LINQ,因此必须有泛型可用,为什么您要使用旧集合而不是
列表
等?因为我对这一点(ASP.NET)还不熟悉,当我可以使用泛型哈希表时,我还没有完全理解“创建定义变量类型的类”。)感谢您花时间提供帮助。这实际上不是ASP.NET的问题。它是“core.NET”。我强烈建议您在进行任何LINQ工作之前,先了解泛型。它们都是
子类别
子类别
,以及
类别
都是哈希表。我要寻找的关键应该是
sub_cat.id
@Damiro:这就是我们正在遭受的痛苦,因为您没有使用泛型集合-我们很难知道您在使用弱类型集合时期望得到什么。你为什么要这么做?谢谢,我会调查的。这似乎使代码更加清晰。但是,主要问题是访问子类别哈希表中的
ArrayList
。感谢您的帮助。@Damiro:这只是“主要问题”,因为您是从您已经做出的决定的角度来看问题的,我认为这不是正确的决定。如果你使用ToLookup,你可能会发现它只是一个简单的语句,完全可以做正确的事情。但是我们现在还不能很容易地分辨出来,所以这个查找可以创建某种映射,沿着
{'a':(1,2,3),'b':(4,5,6)}
?我真正的要求是能够轻松地通过
a
b
循环输出相关的数字
(1,2,3,4,5,6)