C# 是空实体框架5

C# 是空实体框架5,c#,sql,linq,C#,Sql,Linq,我在sql server中有这样一句话: SELECT * FROM Documentos WHERE ( @param IS NULL OR strNOMPRO = @param ) 我用实体来做这件事 DocumentsList = db.DOCUMENTOS .Where(d => d.strNOMPRO == nombre && d.strNOMPRO == null) .OrderByDescend

我在sql server中有这样一句话:

SELECT * FROM Documentos WHERE ( @param IS NULL OR strNOMPRO = @param )
我用实体来做这件事

DocumentsList = db.DOCUMENTOS
                .Where(d => d.strNOMPRO == nombre && d.strNOMPRO == null)
                .OrderByDescending(d => d.datFECCER).ToList();
如果param为null,则返回sql中的所有寄存器,但在linq中返回0个寄存器


我如何才能做到这一点?

这相当于您的SQL WHERE语句:

DocumentsList = db.DOCUMENTOS
                .Where(d => nomber == null || d.strNOMPRO == nombre)
                .OrderByDescending(d => d.datFECCER)
                .ToList();
它检查参数的
null
或()

BTW,因此参数在查询中间不能更改,动态添加过滤条件更为有效:

var query = db.DOCUMENTOS;

if (!String.IsNullOrEmpty(nombre))
    query = query.Where(d => d.strNOMPRO == nombre);

DocumentsList = query.OrderByDescending(d => d.datFECCER).ToList();

进一步阅读:而且

看起来您在
.Where()
中意外地使用了
&&
而不是
|