是否可以使用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,null,14,null,11,16,17}的列表?
这对我不起作用:
query.ToList<decimal?>();
有可能吗?
答案 0 :(得分:3)
问题是x.OrderId
在NullReferenceException
为空时会抛出x
。您需要检查null first ,然后返回属性(如果有对象)。例如
select x == null ? (decimal?)null : x.OrderId;
OrderId
虽然听起来不应该是十进制的......
答案 1 :(得分:1)
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;
答案 2 :(得分:0)
尝试:
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);