1. and 2. can be done relatively compact in several variants:

(Will perform various actions on a typed List(Of Integer) and display results in ListBoxN, N = {1, 2, 3})
vb Code:
  1. Private Sub TestLoopingOfTypedLists()
  2.  
  3.         Dim MyList As New List(Of Integer)
  4.  
  5.         MyList.AddRange(New Integer() {1, 7, 3, 9, 2, 11, 19, 6, 3, 1, 12})
  6.  
  7.         '1. Iteration over a rearrangement
  8.         MyList.OrderByDescending(Function(n) 20 - n).ToList().ForEach(AddressOf DoSomethingA)
  9.  
  10.         '2. Iterate over subsets of a list.
  11.         MyList.Distinct.ToList.ForEach(AddressOf DoSomethingB)
  12.         MyList.Where(Function(n) n > 5).ToList.ForEach(AddressOf DoSomethingC)
  13.  
  14.     End Sub
  15.  
  16.     Private Sub DoSomethingA(ByVal sInteger As Integer)
  17.         ListBox1.Items.Add(sInteger.ToString)
  18.     End Sub
  19.     Private Sub DoSomethingB(ByVal sInteger As Integer)
  20.         ListBox2.Items.Add(sInteger.ToString)
  21.     End Sub
  22.     Private Sub DoSomethingC(ByVal sInteger As Integer)
  23.         ListBox3.Items.Add(sInteger.ToString)
  24.     End Sub

Tom