Linqの左結合については既に多くの質問があります。私が見てきた左結合については、join
キーワードを使用して目的の目的を達成しています。Linqに参加しましたか?
これは私には意味がありません。テーブルCustomer
とInvoice
があり、外部キーCustomerID
がInvoice
にリンクされているとします。今、顧客情報と請求書を含むレポートを実行したいと思います。 SQLは次のようになります。私はSOに答えを見てきたもの、人々はほとんどが示唆されている
select c.*, i.*
from Customer c
left join Invoice i on c.ID = i.CustomerID
から:
var q = from c in Customers
join i in Invoices.DefaultIfEmpty() on c.ID equals i.CustomerID
select new { c, i };
私は本当にこれが唯一の方法であることができる方法を理解していません。 Customer
とInvoice
の関係は、LinqToSQLクラスによってすでに定義されています。なぜ私はjoin
句のためにそれを繰り返さなければならないのですか?もし私が内部の参加を望むならば、それは単純に:
var q = from c in Customers
from i in c.Invoices
select new { c, i };
結合されたフィールドを指定しないで!
私が試した:
var q = from c in Customers
from i in c.Invoices.DefaultIfEmpty()
select new { c, i };
が、それは内部結合であるかのようにちょうど私に同じ結果を与えたことを。
これを行う良い方法はありませんか?
よく吹き飛ばす - あなたは正しい!さて、なぜ私はこれがうまくいかないと思ったのですか? OK、私は謙虚に戻りました...この質問は私自身の誤解の結果でした。ありがとう! :) –