3

我有以下两个变量:

        List<List<string>> result
        string[][] resultarray

我想从结果中获取值并将它们存储在结果数组中,如下所示: [["one", "two"], ["three"], ["four", "five", Six"], ["seven "]、["八"]] 等。

我有以下代码:

        string[][] resultarray = new string[resultint][];
        int a = new int();
        int b = new int();
        foreach (List<string> list in result)
        {
            foreach (string s in list)
            {
                resultarray[b][a] = s;
                a++;
            }
            b++;
        }
        return resultarray;

但是,在调试时,我在尝试增加 a 或 b 时收到“NullExceptionError: Object reference not set to an instance of an object”。我也尝试将它们声明为:

    int a = 0
    int b = 0

...这也不起作用。我没有正确声明这些还是与 foreach 循环有关?

4

2 回答 2

10

每个子数组都以null- 您需要创建内部数组开始。

但更简单的方法是:

var resultarray = result.Select(x => x.ToArray()).ToArray();

如果我们假设输入类似于:

var result = new List<List<string>> {
    new List<string> { "one", "two" },
    new List<string> { "three" },
    new List<string> { "four", "five", "six" },
    new List<string> { "seven" },
    new List<string> { "eight" },
};
于 2013-10-24T12:59:43.657 回答
3

在内循环之前:

resultarray[b] = new string[list.Count];
于 2013-10-24T13:00:57.383 回答