私は(「へ」を使用して)最初の方法の例をたくさん見つけLINQLINQ左外側は、構文の違いを登録しよう
class Customer
{
public int ID { get; set; }
public string Name { get; set; }
}
class Order
{
public int ID { get; set; }
public string Product { get; set; }
}
static void Main()
{
// Example customers.
var customers = new Customer[]
{
new Customer{ID = 5, Name = "Sam"},
new Customer{ID = 6, Name = "Dave"},
new Customer{ID = 7, Name = "Julia"},
new Customer{ID = 8, Name = "Sue"},
new Customer{ID = 9, Name = "Joe"}
};
// Example orders.
var orders = new Order[]
{
new Order{ID = 5, Product = "Book"},
new Order{ID = 6, Product = "Game"},
new Order{ID = 7, Product = "Computer"},
new Order{ID = 8, Product = "Shirt"},
new Order{ID = 8, Product = "TShirt"}
};
// First Way
var query = from c in customers
join o in orders on c.ID equals o.ID into co
from x in co.DefaultIfEmpty()
where x != null && x.Product == "Shirt"
select new {c, x};
// Second Way
var query2 = from c in customers
from o in orders
where c.ID == o.ID && o.Product == "Shirt"
select new {c, o};
}
に参加、それは方法ですLEFT OUTERを行うための少なくとも2つの方法があります。私はLEFT OUTER JOINSをしていました。最近、私は第2の方法を見つけました、そして、それはより簡単であるように見えます。私はテストし、両方とも同じ結果を生み出します。今私の質問は、隠れた違い、パフォーマンス、またはそれは構文的な砂糖だけですか?
ありがとうございます。
はなぜ地球上であなたはきっと、これは単にストレート内部にあるため!= nullのチェックを結合する必要があり、左外部結合を使用している取得する?
Bobに感謝します。 –