Чтобы ответить на ваш вопрос о лямбда-выражении, это слишком сложно, чтобы вставить его в лямбда-выражение, поскольку VB не поддерживает многострочные лямбда-выражения.
Для решений не-LINQ:
Вам нужен именованный метод для сравнения:
Private Function Comparer(ByVal x As Product, ByVal y As Product) As Integer
Dim result As Integer = x.Popular.CompareTo(y.Popular)
If result = 0 Then
result = x.Clicked.CompareTo(y.Clicked)
If result = 0 Then
result = x.Name.CompareTo(y.Name)
End If
End If
Return result
End Function
Использование:
theList.Sort(AddressOf Comparer)