Vb.net 对于双倍列表中的每个
是否有可能为两个列表中的每一个做一次搜索,并浏览新的“duo列表”? 比如:Vb.net 对于双倍列表中的每个,vb.net,list,for-loop,razor,Vb.net,List,For Loop,Razor,是否有可能为两个列表中的每一个做一次搜索,并浏览新的“duo列表”? 比如: For Each elm In list1 Join list2 elm.obj1 // objet with list1 type elm.obj2 // object with list2 type next elm 列表具有相同的长度。如果您的意思是要枚举单个组合列表,则可以执行以下操作: For Each item In list1.Concat(list2) 'Use item
For Each elm In list1 Join list2
elm.obj1 // objet with list1 type
elm.obj2 // object with list2 type
next elm
列表具有相同的长度。如果您的意思是要枚举单个组合列表,则可以执行以下操作:
For Each item In list1.Concat(list2)
'Use item here.
Next
如果您实际的意思是希望在同一时间访问两个列表中相同索引的项,那么为每个循环创建一个,又有什么意义呢?在这种情况下,您将使用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
如果您的意思是要枚举单个组合列表,则可以执行以下操作:
For Each item In list1.Concat(list2)
'Use item here.
Next
如果您实际的意思是希望在同一时间访问两个列表中相同索引的项,那么为每个
循环创建一个,又有什么意义呢?在这种情况下,您将使用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
您可以使用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
请注意,zip
还不是一个集合,而是一个查询。每当您要枚举它时(例如,对于每个
,首先
,列表
等),您将再次执行此查询。如果需要持久化,您可以创建一个列表或数组(ToList
/ToArray
)并访问它。
许多LINQ方法的延迟求值被调用。您可以通过索引与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
请注意,zip
还不是一个集合,而是一个查询。每当您要枚举它时(例如,对于每个
,首先
,列表
等),您将再次执行此查询。如果需要持久化,您可以创建一个列表或数组(ToList
/ToArray
)并访问它。
许多LINQ方法的延迟求值被调用。什么意思是它们具有相同的长度并且只有一个对象?那么两者都只包含一个对象?它们是否可能包含更多的元素?你到底想怎么加入他们??通过索引还是通过一些其他逻辑,比如公共Id?它与VB6有什么关系?我的意思是,一个对象没有obj1。这是可能的,所以显然没有共同的想法。通过索引是好的,我只是想知道什么是可能的,这意味着有相同的长度,只有一个对象?那么两者都只包含一个对象?它们是否可能包含更多的元素?你到底想怎么加入他们??通过索引还是通过一些其他逻辑,比如公共Id?它与VB6有什么关系?我的意思是,一个对象没有obj1。这是可能的,所以显然没有共同的想法。Via指数很好,我只是想知道它的可能性有多大。知道Zip
,但从未使用过。我将修改下面的Tuple
示例以使用它。您可以/应该在匿名类型的定义中添加Key
,使字段为只读:New With{Key obj,Key obj2}
我一直想知道如何使用Zip()
扩展名,现在我终于知道了!回答得很好!好极了。知道Zip
,但从未使用过。我将修改下面的Tuple
示例以使用它。您可以/应该在匿名类型的定义中添加Key
,使字段为只读:New With{Key obj,Key obj2}
我一直想知道如何使用Zip()
扩展名,现在我终于知道了!回答得很好!您可以将AddressOf
与方法组一起使用,而不是使用lambda:Zip(list2,AddressOf Tuple.Create)
@Sehnsucht。更新。您可以将AddressOf
与方法组一起使用,而不是使用lambda:Zip(list2,AddressOf Tuple.Create)
@Sehnsucht。更新。