3

我有三个数组,每个数组都有不同的数据。我想将它们作为单个数组加入,其中每个数组中索引为 0 的元素必须与新创建的数组中的索引相同。

例如:

 arr1[0]="Trailor";
 arr1[1]="Total Recall";

 arr2[0]="Life of Pi";
 arr2[1]="BDRIP";


 arr3[0]="350MB";
 arr3[1]="4.37GB"

只是我想要具有任何维度的新数组,但上述数组中的元素应该可以通过循环访问。

我想在如下表中打印元素:

 <table>
      <thead>
            <tr>
                 <td>Film Title</td>
                 <td>Type</td>
                 <td>Size</td>    
           </tr>
      <thead>
             <tr>
                 <td>Trailor</td>
                 <td>Life of Pi</td>
                 <td>350MB</td>    
           </tr>
           <tr>
                 <td>Total Recall</td>
                 <td>BDRIP</td>
                 <td>4.37GB</td>    
           </tr>


 <table>
4

5 回答 5

2

Concat如果您只想将所有数组连接在一起,则可以使用:

arr1.Concat(arr2).Concat(arr3);

如果你想要一个新的二维数组,那么只需创建并填充它:

var setOfArrays = new string[][] { arr1, arr2, arr3 };

编辑使用相同的方括号语法访问它们setOfArrays[setIndex][itemIndex]...

for (int i=0 ; i<setOfArrays.Length ; i++)
{
    for (int j=0 ; j<setOfArrays[i].Length ; j++)
    {
        Console.WriteLine(setOfArrays[i][j]);
    }
}
于 2012-11-23T06:02:21.217 回答
2

如果您创建一个类(或结构)来存储数据会容易得多。如果您稍后阅读它会更容易理解:

class Record
{
    public String Title {get; set;}
    public String Type {get; set;}
    public String Size {get; set;}

    public Record(String title, String type, String size)
    {
        Title = title;
        Type = type;
        Size = size;
    }
}

然后只需用您的数据填充这些对象的列表:

List<Record> records = new List<Record>();

for(int i=0; i<elementcount; i++)
    records[i] = new Record(arr1[i], arr2[i], arr3[i]);
于 2012-11-23T06:17:38.867 回答
0

为简单起见,我没有使用您的 HTML 示例,但此代码向您展示了一种可行的技术:

void Main()
{
    var one = new string[] { "one", "two" };
    var two = new string[] { "apple", "pear" };
    var three = new string[] { "cat", "dog" };

    GroupFormatDemo(one, two, three);

}
void GroupFormatDemo(params string[][] args) 
{
    foreach (var a in args) 
    {
        Console.WriteLine("First={0}, Second={1}", a[0], a[1]);
    }
}
于 2012-11-23T06:20:16.353 回答
0

定义一个类类型来保存三个数组中每个数组的一个数据元素:

public class Data
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
    public string Item3 { get; set; }
}

然后构造这些对象的数组,用原始数组中的值填充字段:

var list = new List<Data>();
for (int i = 0; i < arr1.Length; i++)
{
    list.Add(new Data() { Item1 = arr1[i], Item2 = arr2[i], Item3 = arr3[i] };
}

var dataArray = list.ToArray();

此循环假定 arr1、arr2 和 arr3 都具有完全相同的长度。

然后,您可以访问一个索引下的数据,引用感兴趣的特定字段:

Console.WriteLine(dataArray[x].Item1, dataArray[x].Item2, dataArray[x].Item3);
于 2012-11-23T06:22:42.763 回答
0

这是我对 LINQ 解决方案的问题的看法。这将产生一个数组,将同一索引上的元素连接在一起。

List<string[]> movies = new List<string[]>() {arr1, arr2, arr3};


var mergedArray = movies.Aggregate((sArrOne, sArrtwo) => 
                               sArrOne.Zip(sArrtwo, (one, two) => one += " "+two)
                        .ToArray());

mergedArray[0] --> Pi 350MB 的拖车寿命

于 2012-11-23T07:55:50.877 回答