Entity Framework ne supporte pas les arbres d'expression

c# entity-framework expression-trees linq

Question

J'essaie de trier ma collection interrogeable avec une expression personnalisée:

.Lambda #Lambda1<System.Func`2[MyProject.Client,System.Object]>(MyProject.Client $var1)
{
    .Block() {
        .If ($var1.Legal == null) {
            .Return #Label1 { (System.Object)($var1.Person).Email }
        } .Else {
            .Return #Label1 { (System.Object)($var1.Legal).Email }
        };
        .Label
            .Constant<System.Object>(System.Object)
        .LabelTarget #Label1:
    }
}

Cependant, lors de la tentative d'application de ma collection sur une liste, l'application lève une exception:

.Lambda #Lambda1<System.Func`2[MyProject.Client,System.Object]>(MyProject.Client $var1)
{
    .Block() {
        .If ($var1.Legal == null) {
            .Return #Label1 { (System.Object)($var1.Person).Email }
        } .Else {
            .Return #Label1 { (System.Object)($var1.Legal).Email }
        };
        .Label
            .Constant<System.Object>(System.Object)
        .LabelTarget #Label1:
    }
}

UPD à Stilgar

J'utilise l'expression conditionnelle. Mon extension de tri:

.Lambda #Lambda1<System.Func`2[MyProject.Client,System.Object]>(MyProject.Client $var1)
{
    .Block() {
        .If ($var1.Legal == null) {
            .Return #Label1 { (System.Object)($var1.Person).Email }
        } .Else {
            .Return #Label1 { (System.Object)($var1.Legal).Email }
        };
        .Label
            .Constant<System.Object>(System.Object)
        .LabelTarget #Label1:
    }
}

Réponse populaire

Je pense qu'Entity Framework ne prend pas en charge les expressions lambdas d'instruction. Vous aurez peut-être plus de chance si vous pouvez convertir l’instruction if en une expression conditionnelle .

Il semble que vous essayez de trier sur plusieurs propriétés. Je pense que ce serait plus facile à faire en utilisant la méthode ThenBy.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi