我有两个清单。我想看看两个列表是否都匹配id,如果是,我想设置list2的颜色。我如何将其转换为linq或者这样会好吗?
For Each item1 In list1
For Each item2 In List2
If item2.ID = item.ID Then
item2.Color = "Red"
End If
Next
Next
答案 0 :(得分:2)
老实说,你所拥有的东西非常清楚它的作用,如果效率有点低,所以如果它足够快,那么可能保持原样。
但是,如果您确实想要将其更改为使用LINQ,那么您可以执行以下操作:
Dim list1IDs As List(Of String) = list1.Select(Function(x) x.ID).ToList()
For Each item2 In List2.Where(Function(x) list1IDs.Contains(x.ID))
item2.Color = "Red"
Next
答案 1 :(得分:1)
在这种情况下,您可以使用Join
:
Dim query = _
From item1 In list1 _
Join item2 In List2 On item1.ID Equals item2.ID
For Each x In query
x.item2.Color = "Red"
Next