对于每个双重列表

时间:2016-07-22 09:16:43

标签: vb.net list for-loop razor

是否可以为每个加入两个列表执行a并浏览新的" duo列表" ? 类似的东西:

$test = $array_store->return[0]->entries[1]->value;
echo $test;

列表长度相同。

2 个答案:

答案 0 :(得分:4)

您可以通过索引加入LINQ的Enumerable.Zip并创建一个匿名类型:

Dim zipped = list1.Zip(list2, Function(obj1, obj2) New With {Key obj1, Key obj2})

For Each pair In zipped
    Console.WriteLine(pair.obj1)
    Console.WriteLine(pair.obj2)
Next

请注意,zipped不是集合,而是查询。每当您枚举它时(例如For EachFirstToList等),您将再次执行此查询。如果您需要保留它,则可以创建列表或数组(ToList / ToArray)并改为访问它。 许多LINQ方法的惰性求值称为Deferred Execution

答案 1 :(得分:1)

如果您想要枚举单个组合列表,那么您可以这样做:

For Each item In list1.Concat(list2)
    'Use item here.
Next

如果您实际意味着您想要同时访问同一索引中两个列表中的项目,那么For Each循环将如何理解?在这种情况下,您将使用For循环并按索引获取这两个项目:

For i = 0 To list1.Count - 1
    Dim item1 = list1(i)
    Dim item2 = list2(i)

    'Use item1 and item2 here.
Next

考虑其他答案中使用的Zip方法,并将其与我的Tuple建议相结合:

For Each tpl In list1.Zip(list2, Function(a, b) AddressOf Tuple.Create)
    Console.WriteLine(tpl.Item1)
    Console.WriteLine(tpl.Item2)
Next