我有2个阵列
string[] Namesvalues = Names.Split(',');
string[] TotalValues = Total.Split(',');
Run Code Online (Sandbox Code Playgroud)
上面两个数组都有完全相等的值.我想要做的是并行迭代上面两个数组,并希望从两个数组中逐个获取值.
谁能告诉我怎么办?
你可以简单地使用for-loop:
for(int i = 0; i < NamesValues.Length; i++)
{
string name = NamesValues[i];
string totalValue = TotalValues[i];
}
Run Code Online (Sandbox Code Playgroud)
如果长度不同,您可以使用ElementAtOrDefault:
for(int i = 0; i < Math.Max(NamesValues.Length, TotalValues.Length) ; i++)
{
string name = NamesValues.ElementAtOrDefault(i);
string totalValue = TotalValues.ElementAtOrDefault(i);
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下 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);
}
Run Code Online (Sandbox Code Playgroud)
注意,使用a的第二种方法for-loop与ElementAtOrDefault方法不同Enumerable.Zip.
ElementAtOrDefault返回null较小数组的值.Zip 仅将元素组合,直到它到达其中一个序列的末尾.所以当你使用Math.Min而不是Math.Max在for-loop中你会得到类似的行为,但是你应该使用第一种方法,因为没有必要ElementAtOrDefault.