Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有2个内部联接的LINQ语句_C#_Linq - Fatal编程技术网

C# 具有2个内部联接的LINQ语句

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

事实上,我想我可能已经修复了它,要做一些测试,如果可行,我会发布我的解决方案

我正在将一个较旧的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) 
   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中选择列。这是一种“不起作用”,很难说这里有什么问题。你能解释一下问题是什么吗?输出是否不是您所期望的?你能举一个你的问题的例子吗?不是正面的,但那不是他在问题中描述的实际问题。他说的是得到额外的结果,他不想得到不正确的列。