LINQtoSQL:对包含多个项的IN子句求和



我正试图弄清楚如何将以下SQL语句转换为LINQ到SQL:

, 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,或者您"无法将lambda表达式转换为委托类型"System.Func"

我理解为什么我尝试的方法不起作用。

那么你是怎么做到的呢?我知道有一种方法,我只是对LINQ to SQL了解不够,无法解决它。如有任何建议,我们将不胜感激。

我觉得上面的方法不起作用很奇怪,因为我认为我以前也这样做过。在看了我过去的作品并将其与之进行比较后,我发现我犯了一个非常愚蠢的错误,把我的结束括号放错了地方。应该是这样的:

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) 

最新更新