C# 使用与LINQ相关的2个条件转换左外连接
我有一个TSQL代码,它有2个条件相关和左外连接,但我无法将其转换为LINQ语法C# 使用与LINQ相关的2个条件转换左外连接,c#,linq,tsql,C#,Linq,Tsql,我有一个TSQL代码,它有2个条件相关和左外连接,但我无法将其转换为LINQ语法 SELECT ss.StateID, Count(CASE WHEN ss.StateID = sr.FromStateID OR ss.StateID = sr.ToStateID THEN 1 END) AS CountState FROM SupStates ss LEFT JOIN SupRules sr ON ss.StateID IN ( sr.From
SELECT ss.StateID,
Count(CASE WHEN ss.StateID = sr.FromStateID OR ss.StateID = sr.ToStateID THEN 1 END) AS CountState
FROM SupStates ss
LEFT JOIN SupRules sr
ON ss.StateID IN ( sr.FromStateID, sr.ToStateID)
GROUP BY ss.StateID
我生成了此代码,但它不会返回没有关系的StateID
:
from ss in this.Data()
from sp in supRule
where
ss.StateID == sp.FromStateID ||
ss.StateID == sp.ToStateID
group new { ss, sp } by new
{
StateID = ss.StateID
} into g
select new
{
StateID = g.Key.StateID,
RuleCount = g.Count()
}
我想在结果中添加关系为0的StateID。有没有办法用LINQ重写它?您的LINQ没有用0返回任何的原因是因为它正在进行内部联接 我相信您可以通过以下方式实现同样的效果(如果代码没有实际运行,请原谅我,我的linq有点生锈了!):
from ss in this.Data()
select new {
ss.StateID,
CountState = (from sp in supRule
where ss.StateID == sp.FromStatusID || ss.StateID == sp.ToStateID
select sp.Id).Count()
}