使用实体框架筛选结果

本文关键字:筛选 结果 框架 实体 | 更新日期: 2023-09-27 18:00:48

我想又是一个新手问题。我有EF设置,现在我想根据过滤器选择一些记录。我有一个SomeClass,里面有4个项(为了简单起见,所有的字符串都叫string1、string2,依此类推)。现在,在一篇文章中,我在SomeClass的一个实例中发送了过滤器,但可能并没有填写所有属性。因此,您可能会得到string1="something"、string2="bla"和string4="bla2"。因此字符串3=空。现在,我该如何设置查询?如果我尝试类似的东西:

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。我可以检查所有参数,看看它们是否已设置,并在此基础上创建查询,但肯定有比这更优雅的东西。

有人吗?

谢谢!罗纳德

使用实体框架筛选结果

下面将返回someclass.string为null的所有行OR等于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();