【问题标题】:LINQ: How to filter two expressions with OR, while both have conditions to include filter?LINQ:如何使用 OR 过滤两个表达式,同时两者都有包含过滤器的条件?
【发布时间】:2023-01-22 21:36:17
【问题描述】:

我知道 if (includeFilter) query = query.Where (...) 给出与 query = query.Where (n => !includeFilter || <expression>) 相同的结果。

但是,如果我有 <expression1><expression2> 并且我想要 query.Where (n => <expression1> || <expression2>) 怎么办?除了还有includeFilter1includeFilter2

简单地 query.Where (n => (!includeFilter1 || <expression1>) || (!includeFilter2 || <expression2>)) 将不起作用,因为如果 includeFilter1false<expression2> 将无效。

【问题讨论】:

  • 你在找异或expression1 ^ expression2true任何一个expression1是真的或者expression2 是真的,但不是两个都他们中的?
  • 那这个呢? query = query.Where(n => includeFilter1 ? <expression1> : includeFilter2 ? <expression2> : false);

标签: c# linq


【解决方案1】:

我觉得你需要

query.Where(n => (!includeFilter1 || <expression1>) &&
                 (!includeFilter2 || <expression2>))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2019-12-15
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多