J'essaie d'exécuter le code suivant. Mais le code casseLinqToSql - Bit d'un comportement étrange
Dim complaints = From comp In Me.Db.Complaints _
Let varX = GetVariations().WithVariationId(If(comp.ItemPropertyXVariationId, 0)) _
Let varY = GetVariations().WithVariationId(If(comp.ItemPropertyYVariationId, 0)) _
Select New Hogia.Retail.POS.Data.Complaint() With _
{.ItemXVariation = If(varX Is Nothing, DirectCast(String.Empty, String), varX.Name)}
.ItemXVariation est une propriété de type chaîne. Maintenant, je testé cette ligne de code en dehors de la déclaration LINQ de la manière suivante et il a bien fonctionné, retourné le bon résultat que j'attendais
Dim varXX = GetVariations().WithVariationId(0)
Dim varYY = GetVariations().WithVariationId(0)
Dim temp As New Complaint() With {.ItemXVariation = If(varXX Is Nothing, DirectCast(String.Empty, String), varXX.Name)}
Quelqu'un pourrait-il s'il vous plaît me aider à comprendre pourquoi le code dans les premières ruptures de bloc. qu'est-ce qui ne va pas là-bas?
Voici le message qui revient (aide-moi donner un sens à ce sujet)
Impossible de traduire l'expression « Tableau (plainte) .Select (comp => new VB $ AnonymousType_2 2 (comp = comp, varX = Invoke(value(System.Func
1 [System.Linq. IQueryable 1[ Data.ItemPropertyVariation]])).WithVariationId((comp.ItemPropertyXVariationId ?? 0)))).Select($VB$It1 => new VB$AnonymousType_3
2 ($ VB $ It1 = $ VB $ It1, varY = invoquer (valeur (System.Func 1[System.Linq.IQueryable
1 [Data.ItemPropertyVariation]])). WithVariationId (($ VB $ It1.comp.ItemPropertyYVariationId ?? 0)))). Sélectionnez ($ VB $ It => new Complaint() {ItemXVariation = IIF ((Convert ($ VB $ It. $ VB $ It1.varX) = null), null, $ VB $ It. $ VB $ It1. varX.Name)}) ' dans SQL et ne pouvait pas le traiter comme une expression locale.
Supprimer autant de votre code que possible, mais en laissant assez que le problème persiste et modifier votre message en conséquence. – jason