使用 .WHERE 获取项目的子集,然后使用 Lambda 表达式按条件删除
Get a subset of items using .WHERE and then REMOVEALL by condition using Lambda Expressions
我有一个项目列表,这些项目有一个 属性 叫做 vog_code,它是一个整数,这个列表有各种项目,有 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
运算符。
请问有什么办法"for these elements that are vog_code 14 and 16 I then, will check if the dates are greater or equal".
我试过 .Where
然后 .RemoveAll
但那是不可能的。
我不想再使用辅助列表,除非这是唯一的方法。
如果我正确理解了您的目标,这应该就是您所需要的。
主要区别在于使用 ()
对 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);
&& 运算符的优先级高于 ||操作员。如果你想要||在&&之前执行,那么需要用()包裹起来。
我有一个项目列表,这些项目有一个 属性 叫做 vog_code,它是一个整数,这个列表有各种项目,有 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
运算符。
请问有什么办法"for these elements that are vog_code 14 and 16 I then, will check if the dates are greater or equal".
我试过 .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);
&& 运算符的优先级高于 ||操作员。如果你想要||在&&之前执行,那么需要用()包裹起来。