使用实体框架

时间:2015-07-01 22:09:42

标签: c# linq entity-framework

我想是另一种新手问题。我有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。我可以做一些事情来检查所有参数,看看它们是否已经设置并根据它创建查询,但必须有比这更优雅的东西。

任何?

谢谢! 罗纳德

1 个答案:

答案 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();