Ho due liste. Voglio vedere se entrambi gli elenchi hanno una corrispondenza su id, se lo fa, voglio impostare il colore di list2. Come posso convertire questo a linq o sarebbe bello così com'è?
For Each item1 In list1
For Each item2 In List2
If item2.ID = item.ID Then
item2.Color = "Red"
End If
Next
Next
risposte:
2 per risposta № 1Per essere onesti, quello che hai lì è molto chiaro con quello che sta facendo, se un po 'inefficiente, quindi se è abbastanza veloce, allora forse lascialo così com'è.
Tuttavia, se vuoi cambiarlo per usare LINQ, puoi fare qualcosa del genere:
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 per risposta № 2
Puoi usare a Join
in questo caso:
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