gpt4 book ai didi

c# - 返回空的 linq 表达式

转载 作者:太空狗 更新时间:2023-10-29 18:05:26 26 4
gpt4 key购买 nike

我在基类中有一个 WhereFilter 属性,如下所示:

public virtual Expression<Func<CustomerCustomerType, bool>> WhereFilter
{
get { return null; }
}

当它被覆盖时,我想返回其他东西而不是 null,这样我就可以使用 predicatebuilder 扩展 And(来自 LinqKit),这样我就可以编写如下代码:

public override Expression<Func<CustomerCustomerType, bool>> WhereFilter
{
get { return base.WhereFilter.And(x => x.CustomerID == 1); }
}

但这会产生错误,因为 WhereFilter 为空(对象引用未设置为对象的实例)。

目前我正在写:

public override Expression<Func<CustomerCustomerType, bool>> WhereFilter
{
get { return x => x.CustomerID == 1; }
}

所以当有另一个子类覆盖这个时,基类的属性就会丢失。

有什么办法可以解决吗?在 sql 中,我所做的是在 1=1 的地方使用一个虚拟对象,这可以在 linq 中类似地完成吗?

最佳答案

LINQ 等同于 SQL 的 1=1 “thingy”是一个始终返回 true 的谓词:

x => true

如下更改默认方法:

public virtual Expression<Func<CustomerCustomerType, bool>> WhereFilter
{
get { return x=>true; }
}

关于c# - 返回空的 linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com