以下のコードでは、左外部結合の結果(なぜなら、dはco.DefaultIfEmpty(emptyOrder)から返されたテーブルの要素であるco.DefaultIfEmpty(emptyOrder)のdのようになります)don CustomersとOrdersの両方のプロパティを含むのではなく、Ordersのプロパティのみを含んでいます。 顧客と注文の情報にアクセスするために、必要な情報c.cとc.dを表示するために2つの変数を使用しています。 c.c.CompanyNameをc.d.CompanyNameに置き換えた場合、コンパイラはCompanyNameがOrderであるc.dのプロパティではないと言います。私が理解していないのは、顧客と注文に参加することで得られたテーブルの要素であるとは思われないのですか?なぜ、得意先と受注の両方から1つのテーブルに列が表示されるSQLのように、CustomersとOrdersの両方のプロパティが含まれていないのですか?左外部結合の要素は、table1の列とtable2の列を持つとは限りませんか?
var query11 = from c in CustomerList
where c.Country == "USA"
join o in OrderList
on c.CustomerID equals o.CustomerID into co
from d in co.DefaultIfEmpty(emptyOrder)
select new { c, d };
foreach (var c in query11) {
sbResult.Append(String.Format("CustID = {0}, Name = {1},
OrderID = {2}, OrderDate = {3:d}\r\n",
c.c.CustomerID, c.c.CompanyName, c.d.OrderID,
c.d.OrderDate));
}
「emptyOrder」とは何ですか? –
Customersに一致するOrdersがない場合は、null値を置き換えるのはデフォルトのオブジェクトです。 –