2016-12-04 43 views
0
public struct Säljare 
{ 
    public String Namn; 
    public String Personnummer; 
    public String Distrikt; 
    public int AntalArtiklar; 

    public string NAMN 
    { 
     get { return Namn; } 
     set { Namn = value; } 
    } 
    public string PERSONNUMMER 
    { 
     get { return this.Personnummer; } 
     set { this.Personnummer = value; } 
    } 
    public string DISTRIKT 
    { 
     get { return Distrikt; } 
     set { Distrikt = value; } 
    } 
    public int ANTALARTIKLAR 
    { 
     get { return AntalArtiklar; } 
     set { AntalArtiklar = value; } 
    } 
    public int NIVA1 
    { 
     get 
     { 
      if (this.AntalArtiklar > 199) return 4; 
      if (this.AntalArtiklar > 99) return 3; 
      if (this.AntalArtiklar > 49) return 2; 
      if (this.AntalArtiklar > 1) return 1; 
      else return 0; 

     } 
    } 

    public Säljare(string Namn1, string Personnummer1, string Distrikt1, int AntalArtiklar1) 
    { 
     this.Namn = Namn1; 
     this.Personnummer = Personnummer1; 
     this.Distrikt = Distrikt1; 
     this.AntalArtiklar = AntalArtiklar1; 

    } 

    public void SkrivUtInfo() 
    { 
     Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", this.Namn, this.Personnummer, this.Distrikt, this.AntalArtiklar); 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 

     { 
      List<Säljare> salesmen = new List<Säljare>(); 

      var nivaMax = 0; 

      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare6 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 
      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare1 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 
      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare2 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 
      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare3 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 
      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare4 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 
      Console.WriteLine("Var Vänlig och skriv in info för säljaren (1,Namn (enter),2, persnr (enter),3, Distrikt(enter),4, AntalArtiklar (enter), 5,Niva 1-4(enter)"); 
      var saljare5 = new Säljare(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Convert.ToInt32(Console.ReadLine())); 

      var saljare = new Säljare(); 
      var Niva = saljare.NIVA1; 

      nivaMax = Math.Max(nivaMax, Niva); 

      salesmen.Add(saljare1); 
      salesmen.Add(saljare2); 
      salesmen.Add(saljare3); 
      salesmen.Add(saljare4); 
      salesmen.Add(saljare5); 
      salesmen.Add(saljare6); 

      for (int level = 0; level < 4; level++) 
      { 
       var salesmenAtLevel = 1; 
       foreach (Säljare saljaren in salesmen) 
       { 
        if (saljare1.NIVA1 == level) 
        { 
         salesmenAtLevel++; 
        } 
       } 
       if (salesmenAtLevel > 0) 
       { 
        Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare1.NAMN, saljare1.PERSONNUMMER, saljare1.DISTRIKT, saljare1.ANTALARTIKLAR); 

        Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel, saljare1.NIVA1); 

        Console.WriteLine("---------------SUMMARY--------------"); 

       } 

       for (int level1 = 1; level1 < 4; level1++) 
       { 
        var salesmenAtLevel1 = 1; 
        foreach (Säljare saljaren in salesmen) 

         if (saljare2.NIVA1 == level1) 
         { 
          salesmenAtLevel1++; 
         } 

        if (salesmenAtLevel1 > 0) 

         Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare2.NAMN, saljare2.PERSONNUMMER, saljare2.DISTRIKT, saljare2.ANTALARTIKLAR); 

         Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel1, saljare2.NIVA1); 

         Console.WriteLine("---------------SUMMARY--------------"); 
        } 

        for (int level2 = 0; level2 < 4; level2++) 
        { 
         var salesmenAtLevel2 = 1; 
         foreach (Säljare saljaren in salesmen) 

          if (saljare3.NIVA1 == level2) 
          { 
           salesmenAtLevel2++; 
          } 
         if (salesmenAtLevel2 > 0) 
         { 
          Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare3.NAMN, saljare3.PERSONNUMMER, saljare3.DISTRIKT, saljare3.ANTALARTIKLAR); 

          Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel2, saljare3.NIVA1); 

          Console.WriteLine("---------------SUMMARY--------------"); 
         } 

         for (int level3 = 0; level3 < 4; level3++) 
         { 
          var salesmenAtLevel3 = 1; 
          foreach (Säljare saljaren in salesmen) 
          { 
           if (saljare4.NIVA1 == level3) 
           { 
            salesmenAtLevel3++; 
           } 
          } 
          if (salesmenAtLevel3 > 0) 
          { 
           Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare4.NAMN, saljare4.PERSONNUMMER, saljare4.DISTRIKT, saljare4.ANTALARTIKLAR); 

           Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel3, saljare4.NIVA1); 

           Console.WriteLine("---------------SUMMARY--------------"); 
          } 
          for (int level4 = 0; level4 < 4; level4++) 
          { 
           var salesmenAtLevel4 = 1; 
           foreach (Säljare saljaren in salesmen) 
           { 
            if (saljare5.NIVA1 == level4) 
            { 
             salesmenAtLevel4++; 
            } 
           } 
           if (salesmenAtLevel4 > 0) 
           { 
            Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare5.NAMN, saljare5.PERSONNUMMER, saljare5.DISTRIKT, saljare5.ANTALARTIKLAR); 

            Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel4, saljare5.NIVA1); 


            Console.WriteLine("---------------SUMMARY--------------"); 
           } 

           for (int level5 = 0; level5 < 4; level5++) 
           { 

            var salesmenAtLevel5 = 1; 
            foreach (Säljare saljaren in salesmen) 
            { 
             if (saljare6.NIVA1 == level5) 
             { 

              salesmenAtLevel5++; 

             } 
            } 
            if (salesmenAtLevel5 > 0) 
            { 

             Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare6.NAMN, saljare6.PERSONNUMMER, saljare6.DISTRIKT, saljare6.ANTALARTIKLAR); 

             Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel5, saljare6.NIVA1); 


              Console.WriteLine("---------------SUMMARY--------------"); 

我的问题是,我想排序我的Saljare1-6之后,他们已经达到了NIVA1。目前我得到正确的信息,但它们按输入时的顺序排列。得到后排序结果;设置参数

我想要的是,如果2个卖家达到了200多个销售(等级4),那么它会显示如: 卖方(saljare)信息1个 卖家信息2个 2卖家已经达到4级

与同为所有其他级别。

编辑:有6这些,最终值是正确的,但它没有在正确的顺序。我想让卖家按照他们到达的NIVA1排序。我怎样才能让他们让所有卖家及其信息达到1级,然后是“2个卖家达到1级”。在此之后,所有到达2级的卖家都将获得“1个卖家达到2级”。

当我尝试使用排序列表时,我得到一个ArgumentException,因为多个卖家达到了一定的水平。

for (int level = 0; level < 4; level++) 
      { 

       var salesmenAtLevel = 1; 
       foreach (Säljare saljaren in salesmen) 
       { 
        if (saljare1.NIVA1 == level) 
        { 

         salesmenAtLevel++; 

        } 
       } 
       if (salesmenAtLevel > 0) 
       { 

        Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", saljare1.NAMN, saljare1.PERSONNUMMER, saljare1.DISTRIKT, saljare1.ANTALARTIKLAR); 

        Console.WriteLine("{0} salesmen have reached nivå {1}", salesmenAtLevel, saljare1.NIVA1); 


        Console.WriteLine("---------------SUMMARY--------------"); 

       } 

编辑2:我得到下面的ArgumentException,取决于它何时到达每个NIVA1多于一个卖家。

       SortedList s = new SortedList(); 
             s.Add(saljare1.NIVA1, saljare1); 
             s.Add(saljare2.NIVA1, saljare2); 
             s.Add(saljare3.NIVA1, saljare3); 
             s.Add(saljare4.NIVA1, saljare4); 
             s.Add(saljare5.NIVA1, saljare5); 
             s.Add(saljare6.NIVA1, saljare6); 

             for (int j = 0; j < s.Count; j++) 
             { 
              Console.WriteLine("{0}: {1}", s.GetKey(j), s.GetKey(j)); 
             } 

            } 
            Console.ReadKey(true);   
+0

请格式化代码更具可读性。建议您最好创建一个最简单的示例来展示您的问题。 – Codor

+0

我编辑了这个问题,希望它更容易理解。 – konto123

+0

你的foreach中的saljare1是什么(销售员中的Säljaresaljaren)循环?因为你做'var salesmenAtLevel = 1;'最初,'if(salesmenAtLevel> 0)'条件总是会被满足。你到底在哪里得到参数异常? –

回答

0

据我所知,销售员必须通过NIVA1进行排序,然后进行分组,每组的成员具有要被计数的所述基团具有将被打印。如下所述,这可以更容易地完成,代码重复性更少。

foreach (var iGroup in salesmen.GroupBy(iSalesman => iSalesman.NIVA1) 
           .OrderBy(aGroup => aGroup.Key)) 
{ 
    Console.WriteLine("{0} salesmen have reached nivå {1}", 
         iGroup.Count, 
         iGroup.Key); 
    Console.WriteLine("---------------SUMMARY--------------"); 
    foreach(var iSalesman in iGroup) 
    { 
     Console.WriteLine("Namn = {0} && Personnummer = {1} && Distrikt = {2} && AntalArtiklar = {3}", 
      iSalesman.NAMN, 
      iSalesman.PERSONNUMMER, 
      iSalesman.DISTRIKT, 
      iSalesman.ANTALARTIKLAR); 
    } 
    Console.WriteLine(); 
}