2

我在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();

如果参数为空,则返回 sql 中的所有寄存器,但在 linq 中返回 0 个寄存器

我怎样才能做到这一点?

4

1 回答 1

5

这相当于您的 SQL WHERE 语句:

DocumentsList = db.DOCUMENTOS
                .Where(d => nomber == null || d.strNOMPRO == nombre)
                .OrderByDescending(d => d.datFECCER)
                .ToList();

它检查nullOR ( || Operator ) 的参数它检查 strNOMPRO 属性是否应该等于参数。

顺便说一句,因此您的参数不能在查询中间更改,动态添加过滤条件更有效:

var query = db.DOCUMENTOS;

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

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

进一步阅读:&& 运算符|| 操作员

于 2013-07-23T16:28:45.570 回答