2017-01-25 3 views
1

Ich habe eine Zweigliste, jeder hat eine Nummer N von Mitarbeitern, ich habe ein Branch-Objekt und eine NumberEmployees -Eigenschaft, jetzt muss ich über diese Liste iterieren die Anzahl der Mitarbeiter pro Block , Erkläre ich besser mit der folgenden Tabelle: Ich bestelle die Liste nach Anzahl der Mitarbeiter, bisher kein Problem.Eine Liste in C# -Blöcke teilen

+---------+-----------+ 
| Branch | Employees | 
+---------+-----------+ 
|MEXICO |  800 | 
|USA  |  700 | 
|INDIA |  500 | 
|CHINA |  400 | 
|AUSTRALIA|  300 | 
+---------+-----------+ 

iterieren nun durch eine Liste, aber die Zahl der Mitarbeiter in Blöcke so etwas wie diese Aufteilung:

+-----------+------------+-------------+------------+ 
| Branch | FirstGroup | SecondGroup | ThirdGroup | 
+-----------+------------+-------------+------------+ 
| Mexico |  267 |   267 |  267 | 
| USA  |  234 |   234 |  234 | 
| India  |  167 |   167 |  167 | 
| China  |  134 |   134 |  134 | 
| Australia |  100 |   100 |  100 | 
+-----------+------------+-------------+------------+ 

Am Ende denke ich, die Liste, die würde sein sollte zur Folge haben:

+-----------+-----------+ 
| Branch | Employees | 
+-----------+-----------+ 
| Mexico |  267 | 
| USA  |  234 | 
| India  |  167 | 
| China  |  134 | 
| Australia |  100 | 
| Mexico |  267 | 
| USA  |  234 | 
| India  |  167 | 
| China  |  134 | 
| Australia |  100 | 
| Mexico |  267 | 
| USA  |  234 | 
| India  |  167 | 
| China  |  134 | 
| Australia |  100 | 
+-----------+-----------+ 

Bisher kann ich nur die Liste bestellen.

double TotalEmployees = ListBranch.Sum(item => item.EmployeeNumber); 
double blockSize = TotalEmployees/ListBranch.Count(); 
double sizeQuery = Math.Ceiling(blockSize); 

       foreach (Branch branch in ListBranch.OrderByDescending(f => f. EmployeeNumber)) 
{ 

    //to do 
} 

Ich schätze Ihre wertvolle Hilfe für alle Hinweise Sie mich

+0

Was genau ist die Logik für die Bestimmung, wie viele in jedem Block gehen? – BradleyDotNET

Antwort

0

geben kann Dies könnte für den Trick

Sie
List<BranchEmployee> be = new List<BranchEmployee>(); 
be.Add(new BranchEmployee() { Branch = "MEXICO", Employee = 800 }); 
be.Add(new BranchEmployee() { Branch = "USA", Employee = 700 }); 
be.Add(new BranchEmployee() { Branch = "INDIA", Employee = 500 }); 
be.Add(new BranchEmployee() { Branch = "CHINA", Employee = 400 }); 
be.Add(new BranchEmployee() { Branch = "AUSTRALIA", Employee = 300 }); 
List<BranchEmployee> ExpectedBE = new List<BranchEmployee>(); 
for(int i = 0; i <= 2; i++) 
{ 
    foreach(BranchEmployee smbe in be) 
    { 
     ExpectedBE.Add(new BranchEmployee() 
     { 
      Branch = smbe.Branch, 
      Employee = smbe.Employee/3 
     }); 
    } 
} 

Was ich sehe, ist, dass jede Gruppe die gleiche Anzahl von Mitarbeitern hat, dass ist die Gesamtzahl der Mitarbeiter geteilt durch 3.

Um die Daten in der Art und Weise zu sehen, die Sie gezeigt haben, habe ich eine Klasse wie diese

erstellt
public class BranchEmployee 
{ 
    public string Branch { get; set; } 
    public int Employee { get; set; } 
} 
+0

Danke für Ihre Hilfe, Sie würden mir ein Beispiel geben, wie man es auf der gleichen Liste macht, dh auf der ersten Liste? Und ich verstehe den Zweck des For nicht. –

Verwandte Themen