繁体   English   中英

是否有表达式的默认值,对它没有影响?

[英]Is there default value for expression, which doesn't influence on it?

我在我的应用程序中按某些项目进行了筛选。 它使用表达式查询工作,开头是NULL。

在过滤期间,有很多IF语句,这些语句检查查询是否为NULL。 我需要避免重复,但是问题是我无法添加条件,例如query.And(exp)如果query为NULL。

因此,在添加条件之前-查询变量必须具有值。 我的第一个想法是添加条件并在应用过滤器之前将其删除,但是我无法从主体中将其删除,因为它不是字符串,并且我还没有找到这种方法。 然后,我尝试添加条件,该条件告诉过滤器接受ID等于MAXINT的项目,但这不起作用,因为查询主体看起来像{p => p.ID == 2147483647还有}。 不是OR,而是AND。 因此,有0个项目。

            Expression<Func<Project, bool>> query = null, exp = null;

这就是现在每个IF语句中的工作方式:

            if (filter.ViewSomeProjects)
            {
                exp = p => (some conditions);
                query = query != null ? query.And(exp) : exp;                
            }

这就是我希望它如何工作:

            if (filter.ViewSomeProjects)
            {
                query.And(some conditions);                    
            }

因此,我无法做到自己想要的,而查询开始时为NULL。

我的问题是:有什么方法可以删除表达主体的一部分? 是否可以在表达式中添加无用的条件,而不会影响结果?

谓词生成器乔阿尔巴哈利有TrueFalse ,你可以作为起点使用。

public static Expression<Func<T, bool>> True<T> ()  { return f => true;  }
public static Expression<Func<T, bool>> False<T> () { return f => false; }

如果您从其中之一开始,则可以根据默认行为是什么来建立查询(通常,将限制添加到默认值“所有结果”时,True可以正常工作。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM