2016-11-23 4 views
1

関係に2つの条件と左外部結合を持つTSQLコードがありますが、LINQ構文に変換できませんでした。LINQに関して2つの条件を持つ左外部結合を変換します

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 

私はこのコードをBUITが、それは関係ないと​​を返さない:

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() 
          } 

私はそこresult.Isで0関係LINQでそれを書き換えるためのどのような方法でSTATEIDを追加したいですか?

答えて

3

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() 
} 
+0

はありがとう@mo_roodi –

関連する問題