1

是否可以使用 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?>(); 

是否可以?

4

3 回答 3

3

问题是当为空时x.OrderId会抛出一个。您需要先检查 null ,然后如果有对象则返回该属性。例如NullReferenceExceptionx

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

OrderId听起来不太像是应该是小数...

于 2009-07-14T04:52:44.230 回答
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;
于 2009-07-14T08:06:41.093 回答
0

尝试:

变量查询
    = 来自 db.Customers 中的 c
        在 db.Orders 中加入 o
        上 c.CustomerID 等于 o.CustomerID 到 sr
        选择(sr!= null:sr.OrderId:null);
于 2009-07-14T04:54:18.327 回答