我在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为空,则返回sql中的所有寄存器,但在linq中返回0寄存器。
我怎么能把这事做好?
发布于 2013-07-23 16:28:45
这相当于SQL语句:
DocumentsList = db.DOCUMENTOS
.Where(d => nomber == null || d.strNOMPRO == nombre)
.OrderByDescending(d => d.datFECCER)
.ToList();它检查参数是否为null OR (X-算子),它检查strNOMPRO属性是否应等于参数。
因此,您的参数不能在查询中间更改,动态添加筛选条件更有效:
var query = db.DOCUMENTOS;
if (!String.IsNullOrEmpty(nombre))
query = query.Where(d => d.strNOMPRO == nombre);
DocumentsList = query.OrderByDescending(d => d.datFECCER).ToList();进一步阅读:&&运营商和X-算子
https://stackoverflow.com/questions/17815799
复制相似问题