LINQ to SQL中的内部联接的语法是什么?
时间:2020-03-05 18:45:47 来源:igfitidea点击:
我正在编写LINQ to SQL语句,并且使用了C#中带有ON子句的常规内部联接的标准语法。
我们如何在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;
由于我们在寻找联系人,而不是经销商。
回答
使用Linq Join运算符:
var q = from d in Dealer join dc in DealerConact on d.DealerID equals dc.DealerID select dc;
回答
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();
回答
并且由于我更喜欢表达式链语法,因此我们可以通过以下方式实现它:
var dealerContracts = DealerContact.Join(Dealer, contact => contact.DealerId, dealer => dealer.DealerId, (contact, dealer) => contact);