1

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

我有一个类,我们称它为 Employee:

class Employee 
{
    int employeeid { get; set; }
    String employeename { get; set; }
    String comment { get; set; }
}

我将从数据库中填写一个列表。一个employeeid 可以有X 条评论,因此比率为1:X。当然也可以有 Y 个employeeid。

我想从所有员工对象中创建一个列表,例如employeeid = 1。另一个列表来自employeeid = 2。

我可以按employeeid 对原始列表进行排序,遍历列表并在每次遇到新的employeeid 时创建一个新列表。但是我觉得性能可能会更好。

有没有办法根据 X 个不同的员工 ID 将原始列表拆分为 X 个列表?

4

2 回答 2

6

它很简单:

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

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

于 2013-06-11T18:51:46.993 回答
3

当然,LINQ 的GroupBy应该让这一切变得轻而易举。尝试这样的事情:

var answer = myEmployeeList.GroupBy( emp=>emp.employeeid );
于 2013-06-11T18:52:10.327 回答