C#到VB的通用分类器功能

问题描述

| 任何人都想尝试将其转换为VB吗?
public class GenericSorter<T,PT>
{
    public IEnumerable<T> Sort(IEnumerable source,string sortExpression)
    {
        var param = Expression.Parameter(typeof(T),\"item\");

        var sortLambda = Expression.Lambda<Func<T,PT>>(Expression.Convert(Expression.Property(param,sortExpression),typeof(PT)),param);

        return source.OfType<T>().AsQueryable<T>().OrderBy<T,PT>(sortLambda);
    }

    public IEnumerable<T> Sort(IEnumerable<T> source,param);

        return source.AsQueryable<T>().OrderBy<T,PT>(sortLambda);
    }
}
就我所知...
Public Class GenericSorter(Of T,PT)
    Public Function Sort(ByVal source As IEnumerable,ByVal sortExpression As String) As IEnumerable(Of T)
        Dim param = Expression.Parameter(GetType(T),\"item\")

        Dim sortLambda = Expression.Lambda(Of Func(Of T,PT))(Expression.Convert(Expression.[Property](param,GetType(PT)),param)
        Dim s As IEnumerable(Of T) = source.OfType(Of T).AsQueryable().OrderBy(Of T,PT) (Of sortLambda)

        Return s
    End Function
应该对任何类型的对象进行排序。从这里取     

解决方法

        DeveloperFusions的转换器(在此处)返回以下内容:
Public Class GenericSorter(Of T,PT)
    Public Function Sort(source As IEnumerable,sortExpression As String) As IEnumerable(Of T)
        Dim param = Expression.Parameter(GetType(T),\"item\")

        Dim sortLambda = Expression.Lambda(Of Func(Of T,PT))(Expression.Convert(Expression.[Property](param,sortExpression),GetType(PT)),param)

        Return source.OfType(Of T)().AsQueryable(Of T)().OrderBy(Of T,PT)(sortLambda)
    End Function

    Public Function Sort(source As IEnumerable(Of T),param)

        Return source.AsQueryable(Of T)().OrderBy(Of T,PT)(sortLambda)
    End Function
End Class
它可能值得一试。