How do I do this query in linq? All the tables already are list of objects.
This query give points to entities named "Empresas" (Companies) that fills the "Palavras" (Words) criterias.
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