bonjour

Il y a quelques temps, j'ai mis au point cette fonction pour trier
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 Dim pinfo As PropertyInfo = TypeClass.GetProperty(sortPropertyName)
                Dim Typ = pinfo.PropertyType.Name
                Dim toStr As Expression
 
                Dim Expr As Expression = Expression.Property(paramExpr, pinfo)
 
                toStr = Expression.Call(If(pinfo.PropertyType.IsValueType, Expr, Expression.Coalesce(Expr, Expression.Constant(String.Empty))), "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

Le problème est date.tostring me donne un tri sur la chaine de caractère et pas sur la date
Par exemple, je vais avoir
31/12/2005; 31/11/2011; 31/10/2007
au lieu de
31/11/2011; 31/10/2007; 31/12/2005
J'essai de modifier mon code avec
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 If Typ.Contains("DateTime") Then 'Add For DateTime here
                    toStr = Expression.Call(If(pinfo.PropertyType.IsValueType, Expr, Expression.Coalesce(Expr, Expression.Constant(Date.MinValue))), "ToString", Nothing)
                Else
                    toStr = Expression.Call(If(pinfo.PropertyType.IsValueType, Expr, Expression.Coalesce(Expr, Expression.Constant(String.Empty))), "ToString", Nothing)
                End If
mais je ne vois pas quoi mettre à la place du ToString pour la date.
J'ai essayé "ToString(""yyyy MM dd"")"
Mais j'ai l'erreur
ex = {"Aucune méthode 'ToString("yyyy MM dd")' n'existe sur le type 'System.Nullable`1[System.DateTime]'."}
J'ai essayé aussi : Ticks,Date ou Year,Value.Ticks, GetValueOrDefault.Year.ToString mais même erreur

A moins qu'il y a mieux à faire...