使自定义类可用于LINQ查询

Chr*_*ond 7 c# linq

我有一个基本的集合类,它只包含一个自定义对象的列表,保存在List变量中以允许我使用this []索引.

但是,我现在想要使类可以从集合 LINQ查询中的运行

使用简化的类比,我可以通过刚刚从列表中获得一名工作人员

Employeex = MyStaffList[Payroll];
Run Code Online (Sandbox Code Playgroud)

......但我现在想做的是

var HREmps = from emp in StaffList
             where emp.Department == "HR"
             select emp;
Run Code Online (Sandbox Code Playgroud)

下面是原型类定义....

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;
    .
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 12

您需要创建类实现IEnumerable<Employee>以启用LINQ.这很容易做到(只有一种方法,它可以return lst.GetEnumerator();.

然而,更容易的是List<Employee>直接派生而不是派生object.有没有理由你不这样做?