用单维数组填充二维数组的一行

3

我正在构建一个二维数据数组。我想将该数组的第一行设置为具有正确列数的一维数组的内容,就像这样:

private string[] GetHeaders() {
    return new string[] { "First Name", "Last Name", "Phone" };
}

private void BuildDataArray(IEnumerable<Person> rows) {
    var data = new string[rows.Count() + 1, 3];

    // This statement is invalid, but it's roughly what I want to do:
    data[0] = GetHeaders();

    var i = 1;
    foreach (var row in rows) {
        data[i, 0] = row.First;
        data[i, 1] = row.Last;
        data[i, 2] = row.Phone;
        i++;
    }
}

基本上,我想要一种更简单的方式来填充第一行,而不需要像对rows元素那样迭代每个项。

是否有C#习语可以做到这一点?


3
你为什么要使用数组呢?使用List<T>很简单。 - BradleyDotNET
1
如果您使用不规则数组而不是多维数组,那将会更容易。 - MarcinJuraszek
@BradleyDotNET 我需要将数组传递给一些只接受object[,]的现有代码。我可能会重写那个函数以使用List<T>,因为这样做会使很多事情更容易,但首先我想知道是否可能实现这一点。 - Steve Nay
没问题。我不认为有,但以前我也犯过错误 :) - BradleyDotNET
1个回答

1
你应该改变你的语法:

var data = new string[rows.Count()][];

// This should be valid, an array of arrays
data[0] = GetHeaders();

var i = 1;
foreach (var row in rows) {
    data[i][0] = row.First;
    data[i][1] = row.Last;
    data[i][2] = row.Phone;
    i++;
}

1
我们应该注意,在foreach的每次迭代中都必须初始化data[i](不需要在之前),但除此之外,这段代码做到了我所需的。谢谢! - Steve Nay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接