2017-01-25 63 views
1

我有一个分支列表,每个都有一个员工数量N,我有一个分支对象和一个NumberEmployees属性,现在我需要遍历该列表,发送每个块的员工数,我用下表更好地解释:我按雇员人数排列名单,到目前为止没有问题。将列表划分为C#块

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

现在遍历List而是将员工数量成块这样的事情:

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

最后,我认为应该的结果将是列表:

+-----------+-----------+ 
| 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 | 
+-----------+-----------+ 

到目前为止,我只能订购清单。

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 
} 

我感谢您的宝贵帮助任何线索,你可以给我

+0

什么逻辑确定在每个块中有多少个进入? – BradleyDotNET

回答

0

这可能会为这样的伎俩,你

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

我看到的是,每个组都有员工同等数量的是员工总数除以3.

以您所显示的方式查看数据我创建了这样的班级

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

感谢您的帮助,您可以给我一个如何在同一个列表上执行的例子,即在最初的列表中?我不明白For的目的。 –