2017-10-13 2 views
-3

Je suis nouveau à C# et programmation. J'essaye d'écrire un programme de console qui imprime une liste de personnes et ensuite les classant dans différents groupes (selon combien ils ont vendu).Comment trier les personnes d'une liste en groupes? C#

J'ai une classe People avec get et sets. J'ai "codé en dur" dans une liste et j'ai fait une liste en boucle combien ils ont vendu.

Ce que je dois faire maintenant est d'imprimer le nombre de personnes qui se trouvent dans chaque «groupe de vente».

Je n'ai aucun problème listant tous les emplooyes selon combien ils ont vendu, le problème que je suis face à eux est ajouté en groupes, tout comme ce https://gyazo.com/44c4f2437f7958225b18358814f8a27e

 List<Emplooye> ObjSeller = new List<Emplooye>(); 

     ObjSeller.Add(new Emplooye("Mille Tarp", 936312, "Danderyd", 140)); 
     ObjSeller.Add(new Emplooye("jonas okembia", 970912, "Riga", 70)); 
     ObjSeller.Add(new Emplooye("milton delavega", 981212, "skövde", 
     400)); 
     ObjSeller.Add(new Emplooye("christan wallin", 991132, "oslo", 104)); 
     ObjSeller.Add(new Emplooye("Rickard dahl", 974132, "italien", 343)); 
     ObjSeller.Add(new Emplooye("Lovisa wallin", 944432, "nigera", 144)); 
     ObjSeller.Add(new Emplooye("Marget nillson", 9312332, "Riga", 14)); 


     ObjSeller.Sort(delegate (Emplooye t1, Emplooye t2) 
     { return (t1.AmountSold.CompareTo(t2.AmountSold)); } 
     ); 

     for (int i = 0; i < ObjSeller.Count; i++) 


     { 

      string name = ObjSeller.ElementAt(i).Name; 
      int pnr = ObjSeller.ElementAt(i).PersonNummer; 
      String district = ObjSeller.ElementAt(i).Distrikt; 
      int amountsold = ObjSeller.ElementAt(i).AmountSold; 

      Console.WriteLine(name + ": " + pnr + " - " + district + " - " + 
      amountsold); 


     } 






    } 
} 

}; https://gyazo.com/44c4f2437f7958225b18358814f8a27e

+1

êtes-vous en mesure d'inclure les codes nécessaires et aussi ce que vous avez déjà essayé? –

+2

Montrez une partie de votre code au lieu de le décrire en mots :) –

+3

[so] n'est * pas * un service d'écriture de code libre. Vous devez essayer ** d'écrire le code vous-même **. Après [faire plus de recherche] (http://meta.stackoverflow.com/questions/261592) si vous avez un problème, vous pouvez ** poster ce que vous avez essayé ** avec ** une explication claire de ce qui ne fonctionne pas ** et fournissant un ** [mcve] **. Je suggère de lire [poser] une bonne question et [la question parfaite] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). Aussi, assurez-vous de prendre le [tour]. – Igor

Répondre

0

Iterate la liste et vérifie avec if les instructions où vous voulez les placer.

var people = new List<Person>() { ... }; 
var groups = new Dictionary<string, List<Person>>(); 

foreach (var person in people) { 
    if (person.sale > 100) { 
     List<Person> group; 
     if (groups.TryGetValue("Whatever", group)) { 
      group.Add(person); 
     } else { 
      groups.Add("Whatever", new List<Person> { 
       person 
      }); 
     } 
    } else if (person.sale < 100 && person.sale > 50) { 
.... 

J'espère que vous aurez l'idée générale.

+0

hmm je ne comprends pas 100%. Voulez-vous m'envoyer une page Web qui couvre cela? J'ai essayé de google, pas de succès. –

+0

Cela a été du haut de ma tête, vous avez une liste de personnes, vous avez besoin trié en groupes, pour lesquels je recommande le dictionnaire car c'est la structure la plus rapide, puis vous itérez sur chaque personne dans votre liste, comparez Je veux trier (dans l'ex, j'ai regardé la propriété de vente) et l'ajouter au groupe. Si c'est la première fois que vous créez le groupe, vous devez initialiser la liste, sinon ajouter à la liste dans le groupe. – TehAbstraCt

1

Dans cet exemple, nous avons 3 groupes de personnes:

  1. personnes qui ont vendu 0 à 100 articles
  2. Les gens qui ont vendu 101 à 200 articles
  3. Les gens qui ont vendu 201 à 300 articles

Nous avons une liste avec tous les gens et nous avons besoin de 3 listes (groupes) où nous déplaçons les gens.

List<Person> allPeople = new List<People>(); 
List<Person> group1, group2, group3; 
group1 = group2 = group3 = new List<Person>(); 

Maintenant, nous devons les regrouper ...

foreach (Person p in allPeople) 
{ 
    if (p.SoldItems > 0 && p.SoldItems <= 100) 
     group1.Add(p); 
    else if (p.SoldItems > 100 && p.SoldItems <= 200) 
     group2.Add(p); 
    else group3.Add(p); 
} 

Si vous voulez maintenant les gens dans les groupes que vous avez juste à itérer les listes.

+0

Maintenant, je comprends! Merci beaucoup =) –