首页 > 解决方案 > 子类列表上的 Linq 查询

问题描述

我搜索和搜索,但找不到似乎应该很容易做到的事情的解决方案。这是我的课程的一个例子。

public class Employee
{
    // Some properties
}

public class Employees : List<Employee>
{
}

我使用Employees类来简化变量声明,但也可以在那里放置一些其他代码,比如获取聚合信息等。

当我在其上使用 linq 函数时会出现问题,通常是 Where。例如:

Employees employees = csv.LoadEmployees(txtEmployeeMasterFileName.Text);
employees = employees.Where(emp => emp.Status.ToUpper() == "A"); // Only select active employees

我得到一个编译时错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Payroll_Migration.Model.Employee>' to 'Payroll_Migration.Model.Employees'. An explicit conversion exists (are you missing a cast?)   

如果我添加这样的显式演员表:

employees = (Employees)employees.Where(emp => emp.Status.ToUpper() == "A");

我收到运行时错误:

Unable to cast object of type 'WhereListIterator`1[Payroll_Migration.Model.Employee]' to type 'Payroll_Migration.Model.Employees'.

有什么办法可以解决这个问题,还是我必须使用 List 而不是Employees?

标签: c#

解决方案


我回应其他人关于从 子类化的问题,但是List<T>如何填充列表是创建一个新列表并从投影中填充它:

newEmployees = new Employees();
newEmployees.AddRange(employees.Where(emp => emp.Status.ToUpper() == "A"));

推荐阅读