C# 根据索引将三个数组合并为单个数组
我有三个数组,每个数组都有不同的数据。我希望将它们作为单个数组连接起来,其中每个数组中索引为0的元素必须位于新创建数组中的相同索引处 例如:C# 根据索引将三个数组合并为单个数组,c#,C#,我有三个数组,每个数组都有不同的数据。我希望将它们作为单个数组连接起来,其中每个数组中索引为0的元素必须位于新创建数组中的相同索引处 例如: arr1[0]="Trailor"; arr1[1]="Total Recall"; arr2[0]="Life of Pi"; arr2[1]="BDRIP"; arr3[0]="350MB"; arr3[1]="4.37GB" 我只想要任何维度的新数组,但是上面数组中的元素应该可以通过循环访问 我想打印下表中的元素: <ta
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>
片名
类型
大小
叛徒
圆周率的寿命
350MB
全部召回
BDRIP
4.37GB
如果您只想将所有阵列连接在一起,可以使用Concat
:
arr1.Concat(arr2).Concat(arr3);
如果需要新的二维数组,只需创建并填充它:
var setOfArrays = new string[][] { arr1, arr2, arr3 };
编辑使用相同的方括号语法访问它们
for (int i=0 ; i<setOfArrays.Length ; i++)
{
for (int j=0 ; j<setOfArrays[i].Length ; j++)
{
Console.WriteLine(setOfArrays[i][j]);
}
}
for(int i=0;i如果您创建一个用于存储数据的类(或结构),将更容易理解。如果您稍后阅读:
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]);
List记录=新列表();
为了(inti=0;i为了简单起见,我没有使用您的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]);
}
}
定义一个类类型以保存三个数组中每个数组的一个数据元素:
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();
下面是我对LINQ解决方案的看法。这将生成一个数组,同一索引上的元素连接在一起
List<string[]> movies = new List<string[]>() {arr1, arr2, arr3};
var mergedArray = movies.Aggregate((sArrOne, sArrtwo) =>
sArrOne.Zip(sArrtwo, (one, two) => one += " "+two)
.ToArray());
List movies=newlist(){arr1,arr2,arr3};
var mergedArray=movies.Aggregate((sArrOne,sArrtwo)=>
sArrOne.Zip(sArrtwo,(一,二)=>1+=“”+2)
.ToArray());
mergedArray[0]
-->PI350MB的Trailor寿命我不明白您想要什么…在您想要的状态中留下空括号是在指定您的目标。您希望在newArr[0]中有什么
?您有三个候选对象。为什么不定义一个对象电影
,属性标题
,类型
和大小
,并使用这些对象的数组?System.Collections.Generic.List是一种类型,但用作变量。@BhushanFirake抱歉,我的回答中有一个输入错误--请查看我的编辑,现在应该可以工作了。el可以从这个数组访问元素,然后@BhushanFirake您可以将括号语法加倍--setOfArrays[0][0]
,等等。如问题中所述,任何将其打印在一个表中的建议我都同意对象(我几乎从不使用结构,因为它们在C中的值语义会让您大吃一惊)定制的目的往往是更好的表现。
List<string[]> movies = new List<string[]>() {arr1, arr2, arr3};
var mergedArray = movies.Aggregate((sArrOne, sArrtwo) =>
sArrOne.Zip(sArrtwo, (one, two) => one += " "+two)
.ToArray());