我提出一个请求,它有效。
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");
答案 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
都兼容