Какъв е синтаксисът за вътрешно обединение в LINQ to SQL?

Пиша изявление за LINQ to SQL и се интересувам от стандартния синтаксис за нормално вътрешно обединение с клауза ON в C#.

Как се представя следното в LINQ to SQL:

select DealerContact.*
from Dealer 
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Решение

Тя звучи така:

from t1 in db.Table1
join t2 in db.Table2 on t1.field equals t2.field
select new { t1.field2, t2.field3}

Би било хубаво да имате разумни имена и полета за вашите таблици за по-добър пример :)

Актуализация

Мисля, че за вашето запитване това може да е по-подходящо:

var dealercontacts = from contact in DealerContact
                     join dealer in Dealer on contact.DealerId equals dealer.ID
                     select contact;

Тъй като търсите контактите, а не дилърите.

Коментари (1)
var results = from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID
              where (c.CountryID == cn.ID) && (c.CityID == ct.ID) && (c.SectorID == company.SectorID) && (company.SectorID == sect.ID)
              select new { country = cn.Name, city = ct.Name, c.ID, c.Name, c.Address1, c.Address2, c.Address3, c.CountryID, c.CityID, c.Region, c.PostCode, c.Telephone, c.Website, c.SectorID, Status = (ContactStatus)c.StatusID, sector = sect.Name };

return results.ToList();
Коментари (2)

Използвайте оператора Linq Join:

var q =  from d in Dealer
         join dc in DealerConact on d.DealerID equals dc.DealerID
         select dc;
Коментари (2)