2009-11-12 164 views
0

如何在linq中执行此查询?所有表已经是对象列表。将此SQL转换为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 

回答

2

我不认为你会转换,因为它是从SQL到LINQ。你仍然可以试试这个工具,转换SQL到LINQ语法:

http://www.sqltolinq.com/

的最好方法是理解和编写你自己的LINQ语法。