根据T.variable </t> </t>,从一个List <t>中创建新的List <t>数

时间:2013-06-11 18:49:05

标签: c# list object

我很确定这个标题听起来很奇怪,但我希望这是一个有效的问题:)

我有一个班级,我们称之为员工:

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个列表?

2 个答案:

答案 0 :(得分:6)

这很简单:

var query = data.GroupBy(employee => employee.employeeid);

请注意,性能比您描述的算法要好得多。它将为ID使用基于散列的数据结构,这意味着整个操作实际上是对每个项目执行常量操作的单次传递。

答案 1 :(得分:3)

当然,LINQ的GroupBy应该让这一切变得轻而易举。尝试类似的东西:

var answer = myEmployeeList.GroupBy( emp=>emp.employeeid );