c# - 子类列表上的 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?
解决方案
我回应其他人关于从 子类化的问题,但是List<T>
如何填充列表是创建一个新列表并从投影中填充它:
newEmployees = new Employees();
newEmployees.AddRange(employees.Where(emp => emp.Status.ToUpper() == "A"));
推荐阅读
- elasticsearch - 基于另一个文档属性的 Elasticsearch 查询
- visual-studio-code - CSS 文件在 VS Code 中以纯文本形式打开
- php - 有没有办法从 curl 请求中完成 Recaptcha?
- frama-c - Frama-C 中的备用代码分析
- javascript - 使用 jwplayer 无法播放视频文件
- tensorflow - 在 Tensorflow 教程中使用数字特征打包数据时出现“KeyError:在转换后的代码中”
- asp.net-core - Abp.io:“开箱即用”多租户 - 无法连接 - 为每个租户单独的 SQL 数据库连接字符串
- javascript - 设置 Content-Security-Policy 后重定向页面
- php - 在 PhpStorm 中创建新类时更改间距
- python - 如何在python中使用boto3查询cloudwatch日志