2011-06-29 33 views
3

我已經定義了兩個實體映射到我的數據庫中的兩個表。在SQL中,我會做這樣的連接:如何在LINQ中進行外連接?

select * 
from tableA a 
left outer join tableB b on b.ID = a.ID 
where some condition 

我該如何使用LINQ查詢來做到這一點?

回答

4

請參閱:How to: Perform Left Outer Joins (C# Programming Guide)在MSDN上。

例如:

var query = from person in people 
    join pet in pets on person equals pet.Owner into gj 
    from subpet in gj.DefaultIfEmpty() 
    select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) }; 
+0

謝謝:) +1;將在13分鐘內接受。 – Chev

+0

我認爲這是一個:http://msdn.microsoft.com/en-us/library/bb397895.aspx(左外部聯接) – DaveShaw

+0

是,外部聯接更新 –

5

使用Labda表達式您使用GroupJoin

例子:

var query = 
    People 
    .GroupJoin(
    Pets, 
    person => person.PersonId, 
    pet => per.Owner, 
    (person, petCollection) => 
     new 
     { 
      Person = person, 
      Pets = petCollection.Select(pet => pet.Name), 
     });