Получить список, содержащий NULLS, с помощью Linq - PullRequest
1 голос
/ 14 июля 2009

Можно ли использовать LINQ для получения списка, который может содержать нули.

Например, если у меня есть левое внешнее соединение, вот так:

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;

Как мне попасть в Список, который может выглядеть как {12,13, ноль, 14, ноль, 11,16,17}?

Это не работает для меня:

query.ToList<decimal?>(); 

Возможно ли это?

Ответы [ 3 ]

3 голосов
/ 14 июля 2009

Проблема в том, что x.OrderId выдает NullReferenceException, когда x равно нулю. Вам нужно сначала проверить NULL , а затем вернуть свойство, если есть объект. Например

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

OrderId не совсем похоже на десятичную дробь ...

1 голос
/ 14 июля 2009

lc правильно, но немного чище просто привести ваш выбор к обнуляемому типу.

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;
0 голосов
/ 14 июля 2009

Попробуйте:

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);
...