ASP.Net c#将项添加到锯齿状数组中

时间:2010-02-23 17:51:40

标签: asp.net jagged-arrays

我试图将项目添加到锯齿状数组中,数据从数据视图中提取,我有以下代码

foreach (DataRowView answer in AnswersInQuestion)
{
    answersJArray[index] = new string[noOfAnswersInQuestion];
    answersJArray[index][j] = answer["ChoiceText"].ToString();
    j++;
}

第一项添加得很好,但当第二项放入第一项时再次设置为空。所以例如第一次这是数组的样子

arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null

第二轮数组看起来像

arr[0][0] = null
arr[0][1] = answer 2
arr[0][2] = null
arr[0][3] = null

任何人都可以帮助我!!

感谢

4 个答案:

答案 0 :(得分:2)

每次调用构造函数(因此第一个项目设置为null)。将你的字符串数组构造函数放在for-each循环之外(可能在它自己的循环中。

答案 1 :(得分:1)

你需要一个嵌套循环,因为你每次都要创建一个全新的数组并将旧的数组吹走。

//souround with a loop that increments index whenever you want to create a new group of questions
    answersJArray[index] = new string[noOfAnswersInQuestion];
    foreach (DataRowView answer in AnswersInQuestion)
    {

        answersJArray[index][j] = answer["ChoiceText"].ToString();
        j++;
    }

答案 2 :(得分:1)

索引是什么?你似乎没有增加它,每次通过你的foreach你创建一个新的并将其转储到相同的索引中。每次都基本上重写它。

您可能会发现使用List来完成这个锯齿状数组会有更多用处。这将使添加/删除更容易,它可能有助于枚举。

答案 3 :(得分:0)

我的方法是创建一个字符串数组的哈希集,然后随意填充,最后转换为ToArray()

e.g。

HashSet<string[]> data = new HashSet<string[]>();

data.Add(new string[] { "mode", "create" });
data.Add(new string[] { "title", this.TextBoxCreateTitle.Text });

data.ToArray();      // our jagged array