我想是另一种新手问题。我有EF设置,现在我想根据过滤器选择一些记录。我有SomeClass有4个项目(所有字符串保持简单,让我们称之为string1,string2,等等)。现在,在帖子中我将过滤器发送到SomeClass的实例中,但可能并非所有属性都被填充。 所以你可能最终得到string1 =“something”,string2 =“bla”和string4 =“bla2”。所以字符串3 = null。现在,我该如何设置查询?如果我尝试这样的话:
var dataset = entities.mydatabase
.Where(x => x.string1 == someclass.string1 && x.string2 == someclass.string2 && x.string3 == someclass.string3 && x.string4 == someclass.string4)
.Select(x => new { x.string1, x.string2, x.string3, x.string4}).ToList();
...我没有得到任何结果,因为string3 = null。我可以做一些事情来检查所有参数,看看它们是否已经设置并根据它创建查询,但必须有比这更优雅的东西。
任何?
谢谢! 罗纳德
答案 0 :(得分:0)
以下内容将返回someclass.string
为空或等于x.string
的所有行。
var dataset = entities.mydatabase
.Where(x => someclass.string1 == null || x.string1 == someclass.string1)
.Where(x => someclass.string2 == null || x.string2 == someclass.string2)
.Where(x => someclass.string3 == null || x.string3 == someclass.string3)
.Where(x => someclass.string4 == null || x.string4 == someclass.string4)
.Select(x => new { x.string1, x.string2, x.string3, x.string4}).ToList();