我有一个基本的集合类,它只包含一个自定义对象的列表,保存在List变量中,以允许我使用这个[]索引。
但是,我现在想要使类能够从集合中的项目运行 LINQ查询
使用简化的类比,我可以通过
从列表中获得一名工作人员Employeex = MyStaffList[Payroll];
...但我现在想做的是
var HREmps = from emp in StaffList
where emp.Department == "HR"
select emp;
下面是原型类定义......
public class StaffList
{
List<Employee> lst = new List<Employee>();
public StaffList()
{
/* Add Employees to the list */
}
public Employee this[string payroll]
{
get
{
Employee oRet = null;
foreach (Employee emp in lst)
{
if (emp.Payroll.Equals(payroll, StringComparison.InvariantCultureIgnoreCase))
{
oRet = emp ;
break;
}
}
return (oRet);
}
}
}
public class Employee
{
public string Payroll;
public string Department;
.
.
.
.
}
答案 0 :(得分:11)
您需要将类实现IEnumerable<Employee>
以启用LINQ。这很容易做到(只有一种方法,它只能return lst.GetEnumerator();
。
然而,更简单的是直接从List<Employee>
派生而不是从object
派生。有没有理由你不这样做?