2016-08-04 13 views
2

ich ein Ergebnis Klasse:Gruppe durch und Zählung Linq mit

public class Ville 
{ 
    public int Nombre { get; set; } 
    public string Name { get; set; } 
    public int id { get; set; } 
} 

Und ich habe ein list<AnnonceRecherche>, ich brauche Abfrage auf dieser Liste, die Gruppe von AnnonceRecherche.CodeInsee zu machen und Artikel in dieser Gruppe, absteigend sortieren zählen und Karte Ville.Nombre=count() und vilee.name=AnnonceRecherche.Name und ville.id=AnnonceRecherche.CodeInsee

ich meine Abfrage wie folgt beginnen, aber id finden nicht, wie Name Karte:

var query = from annonce in newresults 
      group annonce by annonce.Id 
      into grouping 
      select new Ville {id = grouping.Key, Nombre = grouping.Count() , Name =}; 

Irgendwelche Hilfe bitte?

+0

Haben Sie versucht: 'Name = grouping.annonce .Name'? –

+2

Sie können nicht einfach auf "annonce.Id" gruppieren und den 'Namen' auswählen, da diese Namen sich von' annonce.Id' unterscheiden können. Biside, der Name 'Id' geht davon aus, dass dies einmalig sein soll. Es ist sinnlos, etwas Einzigartiges zu gruppieren. –

Antwort

2

Da Sie durch eine eindeutige Spalte sind die Gruppierung, können Sie immer eine zweite Spalte zu, dass hinzufügen, wenn ihre Werte zu dieser ersten Spalte auch einzigartig sind:

var query = (from annonce in newresults 
      group annonce by new { annonce.Id, annonce.Name } 
      into grouping 
      select new Ville 
      { 
       ID = grouping.Key.Id, 
       Name = grouping.Key.Name, 
       Nombre = grouping.Count() 
      }).OrderByDescending(x=> x.Nombre); 
+0

OP möchte nur von 'AnnonceRecherche.CodeInsee' gruppiert werden. –

+0

Wie kann ich desc by groupin.count in der gleichen Abfrage bitte bestellen? – user1428798

+0

Ich brauche nur durch eine Spalte auch zu gruppieren – user1428798