C# 具有2个内部联接的LINQ语句
事实上,我想我可能已经修复了它,要做一些测试,如果可行,我会发布我的解决方案 我正在将一个较旧的DB系统迁移到LINQ,但在转换一些SQL语句时遇到了问题:C# 具有2个内部联接的LINQ语句,c#,linq,C#,Linq,事实上,我想我可能已经修复了它,要做一些测试,如果可行,我会发布我的解决方案 我正在将一个较旧的DB系统迁移到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
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}
哪个部分不起作用?它没有返回正确的结果,还是您收到了错误?您的where子句中缺少了&&和d.CityID之间的空格。在Linq语句中,您引入了一个语义差异,即
&&d.CityID==1
,这在原始语句中是不存在的。这是故意的吗?如果没有更多关于什么不起作用的信息,很难说,但是看起来您是在SQL中从cities和第二个示例中的deals中选择列。这是一种“不起作用”,很难说这里有什么问题。你能解释一下问题是什么吗?输出是否不是您所期望的?你能举一个你的问题的例子吗?不是正面的,但那不是他在问题中描述的实际问题。他说的是得到额外的结果,他不想得到不正确的列。