我有一个linq查询 . 我从我收集的表单中获取了一堆参数,我需要根据用户搜索的字段进行过滤 .
IQueyable<Users> user = from user in edmxObject.Users
where user.FirstName.Contains(model.FirstName ?? user.FirstName)
&& user.UserName.Contains(model.UserName ?? user.UserName)
我还需要一些非字符串字段过滤器,包括long和boolean . 如果用户没有选择任何内容,它们可能为空 . 如何将它们包含在查询中 .
2 回答
这是LINQ如此强大的最佳示例之一 - 延迟执行 . 您可以在不同的阶段构建查询,并且只有在最终执行或解析查询时才会生成SQL语句:
如果查询不包含特定字段,则根本不需要将其作为where子句的一部分包含在内:
您可以通过这种方式有条件地嵌套谓词,以确保您只有您真正需要的条件 .