将此SQL转换为LINQ

Asked
Viewd242

0

如何在linq中执行此查询?所有的表已经是对象列表。

此查询为满足“ Palavras”(单词)条件的名为“ Empresas”(公司)的实体提供积分。

 select x.empresaid, sum(x.pontos)

from (

        select a.empresaid, sum(1) as Pontos
        from empresa  a
        inner join Palavras b on a.nome like '%' + b.Palavra + '%'
        group by a.empresaid

        union all

        select a.empresaid, sum(case when c.estabelecimento is null then 0 else 1 end) as Pontos
        from empresa  a
        left join estabelecimentoempresa b on b.empresaid = a.empresaid
        left join estabelecimento c on c.estabelecimentoid = b.estabelecimentoid
        left join Palavras d on c.estabelecimento like '%' + d.Palavra + '%'
        group by a.empresaid

        union all

        select a.empresaid, sum(case when c.Cozinha is null then 0 else 1 end) as Pontos
        from empresa  a
        left join Cozinhaempresa b on b.empresaid = a.empresaid
        left join Cozinha c on c.Cozinhaid = b.Cozinhaid
        left join Palavras d on c.Cozinha like '%' + d.Palavra + '%'
        group by a.empresaid
    ) x

group by x.empresaid

order by sum(x.pontos) desc, x.empresaid
 

1 个答案

2

我认为您无法将它从SQL转换为LINQ。您仍然可以尝试使用此工具将SQL转换为LINQ语法:

http://www.sqltolinq.com/

首选方法是自己理解和编写LINQ语法。