2009-12-30 7 views
0

Comment écrire cette requête dans Linq VB.NET?Linq to SQL avec groupe par

select top 15 count(1), A.Latitude, A.Longitude 
from Bairro A 
inner join Empresa B on B.BairroID = A.BairroID 
where A.CidadeID = 4810 
group by A.Latitude, A.Longitude 
order by COUNT(1) desc 

I atteint le code suivant:

Dim TopBairros = (From A In Bairros _ 
        Join B In New BO.Empresa().Select On B.BairroID Equals A.BairroID Group A By A.Latitude, A.Longitude Into g = Group _ 
        Select g Distinct _ 
        Order By g.Count Descending).Take(15) 

Chaque ligne dispose d'une collection de tableau contenant les mêmes objets repeatly avec le nombre de comptage. Exemple:

ligne 0: tableau de 874 mêmes objets ligne 1: tableau de 710 mêmes objets

et ainsi de suite ... Comment puis-je faire pour retourner un seul objet par ligne?

Répondre

3

Essayez ceci:

var query = from a in context.Bairro 
      where a.CidadeID == 4810 
      join b in context.Empresa on a.BairroID equals b.BairroID 
      group a by new { a.Latitude, a.Longitude } into grouped 
      orderby grouped.Count() descending 
      select new { grouped.Key.Latitude, 
         grouped.Key.Longitude, 
         Count = grouped.Count() }; 
var top15 = query.Take(15); 
+0

J'utilise VB.NET ... je suis arrivé à ce code: Dim TopBairros = (De A Dans Bairros _ JOIN B En Nouvelle BO.Empresa(). Sélectionnez On B.BairroID est égal à A.BairroID Groupe A Par A.Latitude, A.Longitude Dans g = Groupe _ Sélectionnez g Distinct _ Order By g.Count Descending) .Take (15) Chaque ligne a une collection de tableaux contenant répétitivement les mêmes objets avec le nombre de comptage. Exemple: ligne 0: tableau de 874 mêmes objets ligne 1: tableau de 710 mêmes objets et ainsi de suite ... Comment faire pour retourner un seul objet par ligne? – Fernando

+0

@Fernando: En utilisant la projection que j'ai à la fin - sélectionnez la clé du groupe et le nombre. –