实际上我想我可能已经修复了它,要做一些测试,如果它有效,我会发布我的解决方案。
我正在将较旧的数据库系统迁移到 LINQ,但在转换一些 SQL 语句时遇到问题:
SELECT * FROM cities
INNER JOIN deals ON cities.cityId = deals.CityID
INNER JOIN countries ON cities.countryID = countries.CountryId
WHERE deals.endDate >= (someDate)
AND countries.CountryId = (1)
AND deals.soldout = (false)
我已经做了一些研究,但我无法让它工作。这是我想出的 LINQ 语句:
var deals = from d in db.deals
join city in db.cities on d.CityID equals city.cityId
join country in db.countries on city.countryID equals country.CountryId
where d.endDate > DateTime.Today && country.CountryId == 1 && d.soldOut == false
select d;
是否有一些特殊方法可以在 LINQ 中使用 2 个联接?
抱歉,我遇到了格式错误:该语句旨在选择具有 countryID = 1 的城市的所有交易
如果您有
城市的国家/地区代码,则不需要第二个加入...
var deals = from d in db.deals
join city in db.cities on d.CityID equals city.cityId
where d.endDate > DateTime.Today &&
city.CountryId == 1 && d.soldOut == false
select d;
如果需要涉及的所有表中的列,则可以为此使用匿名类型。
select new {d, city, country}