【发布时间】:2016-03-22 00:08:47
【问题描述】:
我已经做了好几个小时了。这是我尝试过的:
List<SoccerTeamsModel> incompleteFootballTeams = (from fbt in db.footballTeams
join fbct in db.footballCustomTeams
on fbt.team_id equals fbct.team_id && fbct.client_id == clientId && fbct.language == selectedLanguage into t
from ct in t.DefaultIfEmpty()
where fbt.league_id == leagueId
orderby fbt.name ascending
select new SoccerTeamsModel
{
TeamId = fbt.team_id,
ClientId = ct.client_id,
etc...
}).ToList();
我试图复制的 SQL 查询:
SELECT *
FROM [SoccerData].[dbo].[footballTeams] AS fbt
LEFT OUTER JOIN [SoccerData].[dbo].[footballCustomTeams] AS fbct
ON fbt.team_id = fbct.team_id AND fbct.client_id = 104 AND fbct.[language] = 'fr-FR'
WHERE fbt.league_id = 8
ORDER BY fbt.name ASC
似乎让我感到困惑的是试图放入所有多个“on”子句。我见过一些例子,但它们不包括左外连接。我似乎无法将两者放在一起。
【问题讨论】:
-
为什么不编写一个存储过程并从应用程序的数据访问层调用它,而不是让您的应用程序代码与数据库查询混淆?
-
@Stan 公司不希望我们为此使用存储过程
-
我最终选择了使用文字查询字符串而不是使用 LINQ。太复杂了 imo
标签: c# sql sql-server linq tsql