Question

J'ai la requête LINQ suivante qui aboutit toujours à une erreur lors de mon « Remarque » colonne dtblDetail est nulle, même si je test si elle est NULL.

var varActiveAndUsedElementsWithDetails =
                        from e in dtblElements
                        join d in dtblDetails on e.PK equals d.FK into set
                        from d in set.DefaultIfEmpty()
                        where (e.ElementActive == true)
                        select new
                        {
                            ElementPK = e.PK,
                            Remark = d.IsRemarkNull() ? null : d.Remark
                        };

Le message d'erreur était: « La valeur de la colonne « Remarque » dans « dtblDetails » table est DBNull. » Après avoir ajouté le test d.IsRemarkNull () une exception de référence null est levée.

Pouvez-vous me aider?

Je l'ai déjà vérifié les sites Web suivants mais n'a pas trouvé quelque chose d'utile autre que je dois tester DBNULL. Mais comme dit cela ne résout pas mon problème.

Était-ce utile?

La solution

Le problème est que l'ensemble élément « d » était vide. Donc, appeler 'd.IsRemarkNull () a donné lieu à l'exception de référence null. Le code suivant a résolu le problème:

var varActiveAndUsedElementsWithDetails =
                    from e in dtblElements
                    join d in dtblDetails on e.PK equals d.FK into set
                    from d in set.DefaultIfEmpty()
                    where (e.ElementActive == true)
                    select new
                    {
                        ElementPK = e.PK,
                        Remark = d == null? null : (d.IsRemarkNull() ? null : d.Remark)
                    };

Autres conseils

Où est l'erreur vient? Est-il possible que c'est le d.IsRemarkNull () qui est à l'origine? Qu'est-ce que cette méthode ressemble?

Peut-être:

DBNull.Value.Equals(d.Remark)

peut-être ce champ ne permet pas nul dans db, obtenir une valeur par défaut, et éviter la manipulation des valeurs nulles

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top