0

我试图弄清楚如何将以下 SQL 语句转换为 LINQ to 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 的了解还不够,无法弄清楚。任何意见,将不胜感激。

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 回答