我有2个阵列
string[] Namesvalues = Names.Split(',');
string[] TotalValues = Total.Split(',');
上面两个数组都有完全相等的值。我想要做的是并行迭代上面两个数组,并希望从两个数组中逐个获取值。
任何人都可以告诉我该怎么办?
答案 0 :(得分:6)
你可以简单地使用for
- 循环:
for(int i = 0; i < NamesValues.Length; i++)
{
string name = NamesValues[i];
string totalValue = TotalValues[i];
}
如果长度不同,您可以使用ElementAtOrDefault
:
for(int i = 0; i < Math.Max(NamesValues.Length, TotalValues.Length) ; i++)
{
string name = NamesValues.ElementAtOrDefault(i);
string totalValue = TotalValues.ElementAtOrDefault(i);
}
您还可以使用Enumerable.Zip
创建包含两个值的匿名类型:
var namesAndValues = NamesValues.Zip(TotalValues,
(n, tv) => new { Name = n, TotalValue = tv });
foreach(var nv in namesAndValues)
{
Console.WriteLine("Name: {0} Value: {1}", nv.Name + nv.TotalValue);
}
请注意,使用for-loop
和ElementAtOrDefault
的第二种方法与Enumerable.Zip
方法不同。
ElementAtOrDefault
返回null
,如果该索引中没有元素,则返回较小数组的值。 Zip
仅将元素组合到其中一个序列的结尾。因此,当您在Math.Min
- 循环中使用Math.Max
代替for
时,您会得到类似的行为,但是您应该使用第一种方法,因为不需要{{ 1}}。
答案 1 :(得分:0)
//exactly equal length
for (int i = 0; i < Namesvalues.Length; i++)
{
var name = Namesvalues[i];
var total = TotalValues[i];
}