我无法提出正确的linq请求

时间:2020-04-05 20:08:55

标签: c# linq

我提出一个请求,它有效。

var query = db.Persons.Where(p => p.Date == "27.02.2020").Where(p => p.Country == "USA");

但是由于我将需要在if-else中使用它 我做了一点改动,现在他只是选择了最后一个位置。

如何解决这个问题?

var query = db.Persons;

query.Where(p => p.Date == "27.02.2020");
query.Where(p => p.Country == "USA");

1 个答案:

答案 0 :(得分:0)

Where方法与所有LINQ方法一样,不会就地修改可枚举的源,而是返回一个新的枚举,该枚举已对其应用了操作,在本例中为过滤器。

这意味着您需要将每个操作的结果分配回变量中,以使其持久化。以下内容应与您的原始代码段相同:

IQueryable<Person> query = db.Persons;
query = query.Where(p => p.Date == "27.02.2020");
query = query.Where(p => p.Country == "USA");

正如注释中指出的那样,query变量类型现在需要与db.Persons 类型和返回类型Where都兼容