[英]Linq where clause “if item is not null, evaluate, otherwise, get all data”
[英]get all rows from db if parameter added to where clause is null
我对条件有很大的选择。
WHERE ADB.param1=@param
在我发送参数变量的地方
SqlParameter param1Param = cmd.Parameters.AddWithValue("@param1", param1);
if (param1== null)
{
param1Param.Value = DBNull.Value;
}
该代码按以下方式工作。 当查询执行时,它总是检查ADB.param1=param
条件,当我发送DBNull.Value时,它从数据库中什么也没有。 但除了那个,我想要那个
如果param == null
那么它便不会对此条件造成任何损失,并从数据库中获取所有行。 我该如何实现?
这是一个技巧,它甚至不需要更改C#代码:
WHERE ADB.param1 = COALESCE(@param, ADB.param1)
对于非SQL NULL
值,则@param
必须等于ADB.param1
列。 否则, WHERE
子句将始终为true,并将返回所有记录。
如果要返回@param1
参数为null的所有行,请使用...
where (@param1 is null or ADB.param1 = @param1)
如果只想返回param
的列值为空的那些行,请使用...
where ((@param1 is null and ADB.param1 is null) or ADB.param1 = @param1)
我假设您的查询是WHERE ADB.param1=@param1
尝试使用WHERE (ADB.param1=@param1 OR @param1 IS NULL)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.