将每个嵌套转换为linq

时间:2015-11-05 02:51:52

标签: vb.net linq

我有两个清单。我想看看两个列表是否都匹配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

2 个答案:

答案 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