C# 创建新的列表编号<;T>;从一个列表中选择<;T>;取决于T变量

C# 创建新的列表编号<;T>;从一个列表中选择<;T>;取决于T变量,c#,list,object,C#,List,Object,我很确定这个标题听起来有点奇怪,但我希望这是一个有效的问题:) 我有一门课,我们叫它雇员: class Employee { int employeeid { get; set; } String employeename { get; set; } String comment { get; set; } } 我将从数据库中填写一个列表。一个employeeid可以有X个注释,因此保留1:X的比率。当然,也可以有Y个employeeid 我想创建一个包含所有empl

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

我有一门课,我们叫它雇员:

class Employee 
{
    int employeeid { get; set; }
    String employeename { get; set; }
    String comment { get; set; }
}
我将从数据库中填写一个列表。一个employeeid可以有X个注释,因此保留1:X的比率。当然,也可以有Y个employeeid

我想创建一个包含所有employeeid=1的employee对象的列表。另外一个列表的employeeid=2

我可以按employeeid对原始列表进行排序,循环浏览列表,并在每次点击新的employeeid时创建一个新列表。不过,我觉得表现会更好

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

简单如下:

var query = data.GroupBy(employee => employee.employeeid);
请注意,性能比您描述的算法要好得多。它将对ID使用基于散列的数据结构,这意味着整个操作实际上是对每个项目执行固定时间操作的一次传递。

简单如下:

var query = data.GroupBy(employee => employee.employeeid);
请注意,性能比您描述的算法要好得多。它将对IDs使用基于哈希的数据结构,这意味着整个操作实际上是一次对每个项目执行固定时间操作的单次传递。

当然,LINQ应该可以轻松完成这项操作。试试这样:

var answer = myEmployeeList.GroupBy( emp=>emp.employeeid );
当然,LINQ's应该让这件事轻松些。试试这样:

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

那么,employeeid不是主键?如果是,则employeeid=1的列表将始终只包含1个对象。@TimB类型的名称具有误导性;此项表示员工(而不是员工)的一条注释,因此在此类中它是一个外键。
我想创建一个包含所有员工对象的列表,例如employeeid=1
-employeeid不应该是唯一的吗?-无论如何,你要寻找的是,如果一名员工可以有多条注释,
comment
属性不应该是一个集合而不是一个字符串吗?@TimB:你是对的,这是误导。对此我很抱歉。应该是Comment,employeeid为FK。那么,employeeid不是主键吗?如果是,则employeeid=1的列表将始终只包含1个对象。@TimB类型的名称具有误导性;此项表示员工(而不是员工)的一条注释,因此在此类中它是一个外键。
我想创建一个包含所有员工对象的列表,例如employeeid=1
-employeeid不应该是唯一的吗?-无论如何,你要寻找的是,如果一名员工可以有多条注释,
comment
属性不应该是一个集合而不是一个字符串吗?@TimB:你是对的,这是误导。对此我很抱歉。应该是评论,员工ID为FK。谢谢,这正是我想要的!:)谢谢,这正是我想要的!:)