Question

Est-il possible d'utiliser LINQ pour récupérer une liste qui peut contenir des valeurs NULL.

Par exemple, si j'ai une jointure externe gauche comme ceci:

var query=  from c in db.Customers
                join o in db.Orders
                   on c.CustomerID equals o.CustomerID into sr
                from x in sr.DefaultIfEmpty()
                select x.OrderId;

Comment puis-je obtenir une liste qui pourrait ressembler à {12,13, null, 14, null, 11,16,17}?

Cela ne fonctionne pas pour moi:

query.ToList<decimal?>(); 

Est-il possible?

Était-ce utile?

La solution

est correct en monnaies locales, mais il est un peu plus propre à simplement jeter votre sélection à un type Nullable pur et simple.

var query=  from c in db.Customers
                join o in db.Orders
                   on c.CustomerID equals o.CustomerID into sr
                from x in sr.DefaultIfEmpty()
                select (decimal?)x.OrderId;

Autres conseils

Le problème est x.OrderId va jeter un NullReferenceException quand x est nulle. Vous devez vérifier null first , puis retourner la propriété s'il y a un objet. Par exemple

select x == null ? (decimal?)null : x.OrderId;

OrderId ne pas tout à fait sonner comme il devrait être un nombre décimal mais ...

Essayez:

var query
    = from c in db.Customers
        join o in db.Orders
        on c.CustomerID equals o.CustomerID into sr
        select (sr != null : sr.OrderId : null);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top