我很确定这个标题听起来很奇怪,但我希望这是一个有效的问题:)
我有一个班级,我们称之为员工:
class Employee
{
int employeeid { get; set; }
String employeename { get; set; }
String comment { get; set; }
}
我将从数据库填充List。 employeeid可以有X个注释,因此比率为1:X。当然也可以有Y个员工。
我想在所有雇员对象中创建一个List,例如employeeid = 1.而另一个雇员名单= 2。
我可以通过employeeid对原始列表进行排序,遍历列表并在每次点击新的employeeid时创建一个新列表。不过我觉得表现可能更好。
有没有办法根据X个不同的员工数量将原始列表拆分为X个列表?
答案 0 :(得分:6)
这很简单:
var query = data.GroupBy(employee => employee.employeeid);
请注意,性能比您描述的算法要好得多。它将为ID使用基于散列的数据结构,这意味着整个操作实际上是对每个项目执行常量操作的单次传递。
答案 1 :(得分:3)
当然,LINQ的GroupBy应该让这一切变得轻而易举。尝试类似的东西:
var answer = myEmployeeList.GroupBy( emp=>emp.employeeid );