2009-11-12 11 views
0

Comment faire cette requête dans linq? Toutes les tables sont déjà une liste d'objets.Convertir ce SQL en LINQ

Cette requête donne des points aux entités nommées "Empresas" (Entreprises) qui remplissent les critères "Palavras" (mots).

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 

Répondre

2

Je ne pense pas que vous seriez en mesure de convertir comme il est de SQL à LINQ. Vous pouvez toujours essayer cet outil qui convertissent SQL à la syntaxe LINQ:

http://www.sqltolinq.com/

L'approche préférable est de comprendre et d'écrire la syntaxe LINQ sur votre propre.