To answer your question about a lambda expression, that is too complex to put in a lambda expression, as VB doesn't support multi-line lambda expressions.
For a non-LINQ solution:
You need a named method as a comparer:
theList.Sort( Private Function Comparer(ByVal x As Product, ByVal y As Product) =>As {Integer Dim result intAs resultInteger = x.Popular.CompareTo(y.Popular); ifIf (result === 0) {Then result = x.Clicked.CompareTo(y.Clicked); ifIf (result === 0) {Then result = x.Name.CompareTo(y.Name); End }If End }If returnReturn result;result End }Function Usage:
theList.Sort(AddressOf Comparer);