1

LINQを使用してnullを含む可能性のあるリストを取得することは可能ですか?

たとえば、次のように左外側の結合がある場合:

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

問題は、 whenがnullにx.OrderIdなるとスローされることです。最初にnullをチェックしてから、オブジェクトがある場合はプロパティを返す必要があります。例えばNullReferenceExceptionx

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

OrderIdしかし、小数である必要があるようには聞こえません...

于 2009-07-14T04:52:44.230 に答える
1

lcは正しいですが、selectをnull許容型に完全にキャストする方が少しクリーンです。

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

試す:

varクエリ
    =db.Customersのcから
        db.Ordersでoに参加する
        onc.CustomerIDはo.CustomerIDからsrに等しい
        select(sr!= null:sr.OrderId:null);
于 2009-07-14T04:54:18.327 に答える