这是使用LINQ(用于数据库查询)添加条件的正确方法吗?

时间:2018-07-18 17:16:31

标签: asp.net linq entity-framework-core

我有一些动态条件要在我的Select子句中使用。 因此,我想创建一个诸如“ SELECT * FROM TABLE”之类的“基础查询”,然后我想添加诸如“ WHERE name ='Diego'AND ...”之类的条件。 我正在使用Entity Core,发现的解决方案(正在运行)如下:

//conditions
Expression<Func<Person, bool>> foo = (p => p.Id == 1);
//select
List<Person> people = Db.People.Where(foo).ToList();
//Db is the context, People is the DbSet and Person is the model

我希望有一种简单或标准的方法,实际上我已经尝试了一些,但是没有用。

无论如何,从简单到复杂,我在哪里都能找到关于它的好教程?

----------------------更新------------------------ -----

好吧,这个问题被标记为重复,但是这个Multiple .Where() clauses on an Entity Framework Queryable不适用于我,我不知道为什么,但是该语句在条件之前执行(如果我做同样的事情,例如链接上的答案),我想在执行第一条语句之前应用条件。是的,我知道我必须在末尾使用toList(),无论如何,如果我在该链接上执行相同的操作(如答案),该语句将在之前执行,并且我同意这很奇怪。

----------------------更新------------------------ -----

在下面的图片中,我提供了某种证明:

这里我们执行一个语句(结果是一个Person对象),在这个示例中,我使用的是上面编写的代码。

enter image description here

在这里我们看到的代码是:即使没有方法 ToList(),在此示例中,我使用的是建议的代码。

enter image description here

也许这是一个实体核心错误。 无论如何,这个问题与由于许多原因而被链接的问题不同。

1 个答案:

答案 0 :(得分:0)

  

在这里我们看到的代码是:即使没有以下代码,也会执行queryquery = Db.People.Where(p => p.Name.Contains(“ El”));(结果为两个Person对象)。方法ToList(),在此示例中,我使用建议的代码。

很抱歉,您看到的是您接受了允许表达式运行的事实。它没有运行,直到您按照自己的屏幕快照中的说明打开结果为止:

enter image description here

所以这是重复的,您只是不熟悉本地人/监视窗口的工作方式。