如何将人员从列表中分组? C#

时间:2017-10-13 09:30:05

标签: c# list sorting

我是C#和编程的新手。我正在尝试编写一个控制台程序,打印一个人员列表,然后将它们分成不同的组(取决于他们已售出多少)。

我有一个带有get和sets的People类。我已将“硬编码”列入List并且我已经制作了一个循环,列出了它们的销售量。

接下来我需要做的是打印每个不同的“销售团队”中有多少人。

根据销售量的不同,我列出所有的员工都没有问题,我面临的问题是将它们添加到组中,就像这样 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

2 个答案:

答案 0 :(得分:1)

在这个例子中,我们有3组人:

  1. 销售0至100件物品的人
  2. 销售101至200件物品的人
  3. 销售201至300件物品的人
  4. 我们有一个包含所有人的列表,我们需要3个列表(组)来移动人员。

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

    现在我们必须将它们分组......

    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);
    }
    

    如果您现在想要群组中的人,您只需要遍历列表。

答案 1 :(得分:0)

迭代列表并检查if语句你想把它们放在哪里。

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) {
....

希望你能得到一般的想法。