我有一个项目列表,这些项目具有称为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
,但这是不可能的。
除非它是唯一的方法,否则我不想使用更多的辅助列表。
答案 0 :(得分:1)
关键区别在于使用()
对2个vog_code
条件进行分组。
这将删除所有符合以下两项条件的所有项
vog_code
是14或16 fecha_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);
答案 1 :(得分:0)
&&运算符的优先级高于||。操作员。如果要||要在&&之前执行,则需要将其包装在()中。