0

次のSQLステートメントをLINQtoSQLに変換する方法を理解しようとしています。

, SUM(CASE WHEN p.prioid IN ('1 - Routine', '6 - Planned Outage', '7-Routine Weekly PM', '8-Routine Non-Weekly PM') THEN 1 ELSE     0 END) as Planning

これが私がこれまでに試したことです:

Planning = groupItem.Sum(groupItem.Key.Prioid=="1 - Routine" || groupItem.Key.Prioid=="6 - Planned Outage"||
        groupItem.Key.Prioid=="7-Routine Weekly PM" || "8-Routine Non-Weekly PM") ? 1 : 0


Planning = groupItem.Sum(x=> SqlMethods.Like(x.Prioid, "1 - Routine") || SqlMethods.Like(x.Prioid, "6 - Planned Outage")
        || SqlMethods.Like(x.Prioid, "7-Routine Weekly PM") || SqlMethods.Like(x.Prioid, "8-Routine Non-Weekly PM")) ? 1 : 0  

他にもいくつかありますが、boolをintに変換できないか、「ラムダ式をデリゲート型'System.Funcに変換できない」ため、いずれも機能しません。

私がやろうとした方法がうまくいかない理由を理解しています。

では、どのようにそれを行いますか?方法があることはわかっていますが、LINQtoSQLについて理解するのに十分な知識がありません。何かアドバイスをいただければ幸いです。

4

1 に答える 1

0

過去にやったことがあるので、上記がうまくいかないのは変だと思いました。私の過去の作品を見て、これと比較した後、私は非常に愚かな間違いを犯し、最後の括弧を間違った場所に置いていることがわかりました。次のようになっているはずです。

Planning = groupItem.Sum(x=> SqlMethods.Like(x.Prioid, "1 - Routine") || SqlMethods.Like(x.Prioid, "6 - Planned Outage")
        || SqlMethods.Like(x.Prioid, "7-Routine Weekly PM") || SqlMethods.Like(x.Prioid, "8-Routine Non-Weekly PM" ) ? 1 : 0) 
于 2012-08-01T15:57:20.880 に答える