3

それぞれ異なるデータを持つ 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);

新しい2次元配列が必要な場合は、単純に作成してデータを入力します。

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

3 つの配列のそれぞれからのデータの 1 つの要素を保持するクラス型を定義します。

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 がすべてまったく同じ長さであると想定しています。

次に、関心のある特定のフィールドを参照して、1 つのインデックスの下でデータにアクセスできます。

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

簡単にするために、HTML の例は使用しませんでしたが、このコードは実行可能な手法の 1 つを示しています。

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

これが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 に答える