c#中是否内置了SQL NULLIF函数?
它的外观示例:
double? result
double denominator = 0;
double Numerator = 100;
result = Numerator / NullIf(denominator, 0);
result = Numerator / denominator.NullIf(0);
result = Numerator / Object.NullIf(denominator, 0);
答案 0 :(得分:5)
不,目前没有语言功能。
您可以轻松获得相同的结果,使用三元if:
result = Numerator / (denominator == 0 ? (double?)null : denomiantor);
甚至将它包装为通用函数,如下所示:
Nullable<T> NullIf<T>(T left, T right)
{
return left == right ? (T?)null : left;
}
然后可以被称为:
result = Numerator / NullIf(denominator, 0);
答案 1 :(得分:3)
不,但你可以创建一个。
GIDSignIn.sharedInstance().signOut()
GIDSignIn.sharedInstance().signIn()
答案 2 :(得分:2)
接受的回答给我:
运营商&#39; ==&#39;不能应用于&#39; T&#39;类型的操作数。和&#39; <&#39;
我的NULLIF工作示例:
as.numeric(gsub(' ', '.', trimws(gsub('\\D+', ' ', a))))
#[1] 5.0 3.7 17.2
答案 3 :(得分:0)
没有。但你可以使用三元运算符来编写它的紧凑方式:
double? result
double denominator = 0;
double Numerator = 100;
result = denominator == 0 ? (double?)null : Numerator / denominator;
然而,相当于IFNULL:
result = x ?? 0;
相当于:
result = x.HasValue? x.Value : 0;
答案 4 :(得分:0)
为什么我们假设这个扩展方法能够知道我们的上下文中的null。
它负责调用它的上下文。 因此,错误地说只有一个值被视为null,因为此线程中的所有响应都不合适。
public static T? NullIf<T>(this T value, Func<T,bool> isConsideredNull)
{
if(value == null)
{
return null;
}
return isConsideredNull(value) ? (T?)null : value;
}
我们会以下列方式使用它
string test = "NULL";
test.NullIf((x)=> x.Equals("NULL"));
test.NullIf((x)=> x == "NULL");
test.NullIf((x)=> x.Equals("NULL",StringComparison.InvariantCultureIgnoreCase));