gpt4 book ai didi

c# - 如果 Expression 为 null 或为空而不在 IF 语句中检查 null 是否可以忽略它?

转载 作者:太空狗 更新时间:2023-10-30 00:10:42 26 4
gpt4 key购买 nike

好吧,我有两个表达式 X , Y

如果 flag 为真则 y 有一个表达式

我需要一个 List<mylist> v = list.where(x).where(y).ToList();

在这种情况下如果y表达式为null,就会抛出异常,

我知道我可以在构建查询之前检查是否为 null,但在大型查询中这可能是一场噩梦。

那么有什么方法或值可以告诉表达式在执行表达式时被忽略吗?

最佳答案

您可以很容易地添加自己的扩展方法。目前尚不清楚您是否正在使用 IQueryable<>IEnumerable<> (由于大小写问题以及没有 Where 方法返回 List<T> 的事实,以及您在声明它的同一语句中使用 x 的事实,您的代码不会以任何方式编译)但是你可以很容易地处理这两个问题:

public static class NullSafeExtensions
{
public static IEnumerable<T> NullSafeWhere<T>(this IEnumerable<T> source,
Func<T, bool> predicate)
{
return predicate == null ? source : source.Where(predicate);
}

public static IQueryable<T> NullSafeWhere<T>(this IQueryable<T> source,
Expression<Func<T, bool>> predicate)
{
return predicate == null ? source : source.Where(predicate);
}
}

然后:

var results = source.NullSafeWhere(x).NullSafeWhere(y);

(当然,它只是在谓词方面是空安全的,而不是源...)

关于c# - 如果 Expression 为 null 或为空而不在 IF 语句中检查 null 是否可以忽略它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016318/

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