c# - 使用 .WHERE 获取项目的子集,然后使用 Lambda 表达式按条件删除
问题描述
我有一个项目列表,这些项目有一个名为 vog_code 的属性,它是一个 int,这个列表有各种项目,有 4 种不同类型的 vog_code,1,10,14,16。
现在,我想删除该列表中不遵守特定日期的项目,但对于 vog_codes 等于 14 和 16 的项目,条件会有所不同。
这是我现在的表达:
transaccionSinAgruparResp.ListaDeTransacciones.RemoveAll(x => x.vog_code == 14 || x.vog_code == 16 && x.fecha_recepcion >= fechaOriginal);
这是不正确的,因为它将消除所有带有 vog_code 14 和 16 的项目并且不遵守AND
操作员。
有什么方法可以询问“对于这些 vog_code 14 和 16 的元素,我将检查日期是否大于或等于”。
我尝试了一个.Where
然后.RemoveAll
但这是不可能的。
我不想使用更多的辅助列表,除非它是唯一的方法。
解决方案
如果我正确理解你的目标,这应该是你所需要的。
关键区别在于使用 对()
2 个vog_code
条件进行分组。
这将删除以下两个都为真的所有项目
vog_code
是 14 或 16fecha_recepcion >= fechaOriginal
transaccionSinAgruparResp.ListaDeTransacciones.RemoveAll(x => (x.vog_code == 14 || x.vog_code == 16) && x.fecha_recepcion >= fechaOriginal);
另一种方式
另一种方法是像这样切换你的条件:
transaccionSinAgruparResp.ListaDeTransacciones.RemoveAll(x => x.fecha_recepcion >= fechaOriginal && x.vog_code == 14 || x.vog_code == 16);
推荐阅读
- embedded - 为什么 SPI 序列与 MSB 顺序 EFR32 不匹配
- vim - 如何恢复被位置列表取代的文件的内容?
- php - 如何在 apache2 - ubuntu 上托管 .php 文件?
- go - 检查是否需要迁移
- javascript - 日期时间选择器:禁用当天晚于当前时间的时间并启用前几天的时间
- c# - 如何在 ASP.NET MVC 中为字符串设置 10 或 17 的特定长度
- python - 水印opencv周围的轮廓
- python - 如何从 .env 文件中为 pytests 加载变量
- reactjs - Mobx + RootStore + useContext hook 时的单元测试用例
- spring-boot - 在 Spring Boot 中构建分层 jar 时,如何在一个层中包含多模块项目 jar?