2

この msdn の例では:

.NET Standard クエリ演算子

LEFT JOIN の例を次に示します。

var custTotalOrders =
 from c in customers
 join o in orders on c.CustomerID equals o.CustomerID into co
 from o in co.DefaultIfEmpty(emptyOrder)
 select new { c.Name, o.OrderDate, o.Total };

そして、次のように述べています。

ここで、emptyOrderは、欠落している注文を表すために使用されるOrderインスタンスです。

では、emptyOrderはどこから来たのでしょうか? コードでどのように使用できますか?

4

1 に答える 1

2

DefaultIfEmpty には 2 つのオーバーロードがあります

DefaultIfEmpty ()

DefaultIfEmpty(デフォルト値)

1 つ目は default(T) を返します。ここで、列挙型が空の場合、T は列挙型に含まれる型です。

2 番目は、enumerable が空の場合、defaultValue パラメーターで指定された値を返します。

次のように emptyOrder を宣言したと仮定します。

Order emtpyOrder = new Order() { Total=100 };

次に、クエリで:

var custTotalOrders =
from c in customers
join o in orders on c.CustomerID equals o.CustomerID into co
from o in co.DefaultIfEmpty(emptyOrder)
select new { c.Name, o.OrderDate, o.Total };

顧客が一致する注文を持っていない場合、投影された匿名オブジェクトの Total プロパティの値は 100 になります。

于 2012-07-11T19:58:07.373 に答える