Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 使用与LINQ相关的2个条件转换左外连接_C#_Linq_Tsql - Fatal编程技术网

C# 使用与LINQ相关的2个条件转换左外连接

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

我有一个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.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()
}