Лучший способ сортировки - использовать универсальный класс для сортировки, который можно использовать в приложении для сортировки.
Используйте следующий класс, который использует выражения Linq и Lamda.
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Linq.Expressions
Public Class GenericSorter(Of T)
Public Function Sort(ByVal source As IEnumerable(Of T), _
ByVal sortBy As String, _
ByVal sortDirection As String) As IEnumerable(Of T)
Dim param = Expression.Parameter(GetType(T), "item")
Dim sortExpression = Expression.Lambda(Of Func(Of T, Object))_
(Expression.Convert(Expression.[Property](param, sortBy), _
GetType(Object)), param)
Select Case sortDirection.ToLower
Case "asc"
Return source.AsQueryable().OrderBy(sortExpression)
Case Else
Return source.AsQueryable().OrderByDescending(sortExpression)
End Select
End Function
End Class
Для вызова этого класса используйте реализацию ниже
Dim gs As New GenericSorter(Of FileDepartmentSurveyData)
SurveyFormatItems = gs.Sort(SurveyFormatItems.AsQueryable, _
sortExpression, sortDirection).ToArray()
http://www.codeproject.com/Articles/37541/Generic-Sorting-with-LINQ-and-Lambda-Expressions