我一直在这里搜索和谷歌,但我很茫然。我需要让用户使用表单搜索数据库中的报告。如果表单上的某个字段具有值,则该应用将获得该字段设置为该值的任何报告。如果表单上的某个字段留空,则应用会忽略它。我怎样才能做到这一点?理想情况下,我想只将Where子句作为字符串来编写,并将那些不是空的。动态生成Linq/Lambda条款
.Where("Id=1")
我听说这是应该的工作,但我不断收到一个错误:“无法在上下文中的电流范围内加以解决,确保所有引用变量的范围......”。
另一种方法是拉出所有报告,然后每次过滤一个where子句。我对此犹豫不决,因为1.这是网络上的一大块数据,2.这是用户端的大量处理。我想利用服务器的处理能力。我听说,它不会查询,直到它实际要求。所以做这样的事情
var qry = ctx.Reports
.Select(r => r);
不实际运行查询,直到我做的:
qry.First()
但是,如果我开始做:
qry = qry.Where(r => r.Id = 1).Select(r => r);
qry = qry.Where(r => r.reportDate = '2010/02/02').Select(r => r);
将运行查询?因为我添加了一个where子句。我想要一个简单的解决方案...在最坏的情况下,我会使用查询生成器的东西......但我宁愿避免(似乎很复杂)。
有什么建议吗? :)
http://stackoverflow.com/questions/848415/linq-dynamic-where-条款 – Greg 2011-05-09 21:40:32