2
동적 메서드를 사용하여 개체 목록을 정렬합니다.null 값을 가진 필드를 정렬하는 식 람다
For Each Sort In MesDonnees.MesOptions
If Sort.Sens < 2 Then
Dim sortPropertyName As String = Sort.ColName
If (TypeClass.GetProperties().Any(Function(prop) prop.Name = sortPropertyName AndAlso prop.CanRead)) Then
'Information sur la propriété recherchée
Dim pinfo As PropertyInfo = TypeClass.GetProperty(sortPropertyName)
Dim Expr As Expression = Expression.Property(paramExpr, pinfo)
Dim Tostr As Expression = Expression.Call(Expr, "ToString", Nothing)
Dim orderByFunc As Func(Of MaClass, Object) = Expression.Lambda(Of Func(Of MaClass, Object))(Tostr, paramExpr).Compile()
Dim sortFunc As Func(Of IEnumerable(Of MaClass), IOrderedEnumerable(Of MaClass)) = Nothing
If (Not CBool(Sort.Sens)) Then
sortFunc = (Function(source) source.OrderBy(orderByFunc))
Else
sortFunc = (Function(source) source.OrderByDescending(orderByFunc))
End If
query = sortFunc(query).ToList()
End If
End If
Next
Sort.ColName
내가 필터링 할 내 필드의 이름입니다.
내가 더 널 (null) 값이없는 경우, 그것은 완벽하지만 난 널 값을 가질 때, 나는 라인 query = sortFunc(query).ToList()
에 예외를 얻을 : 객체
개체 참조
Expression.Call
과ISNullOrEmpty
으로 다른 코드가 표시되지만 내 경우 올바르게 사용하는 방법을 모르겠습니다. 나는 널 (null)을 원한다. 올바른 표현은 상수이다 당신의 도움과 설명은덕분에
완벽한 @ 비요른 - 로저 Kringsjå을 :
여기에 작동합니다 예입니다. 실행 중입니다. – YannickIngenierie