如何解决Linq链接条件
需要基于来自输入对象的输入来链接where
条件。在EF核心中使用LINQ
。
例如:从雇员中选择*,其中name ='test'和place ='us'这两个条件始终存在。此外,我还有3个可选参数,可能有也可能没有,例如:城市,县和邮政编码。
如果城市存在,则第一个条件检查仅将城市条件附加到现有的where条件。例如:从名称为'test'且地点='us'和city ='ny'的雇员中选择*,并且查询仅需要在数据库级别进行。
如果城市不存在,请检查县是否存在,例如:从员工中选择*,其中名称=“ test”,地点=“ us”,country =“ testcounty”,并且查询仅需要在数据库级别进行。
如果县不存在,请检查zip是否存在,例如:从员工中选择*,其中name ='test'且place ='us'和zip ='123',并且查询仅需要在数据库级别进行。 / p>
如果不存在,则返回例如:从员工中选择*,其中name ='test'和place ='us',并且查询仅需要在数据库级别进行。
我在LINQ中尝试了一些条件,方法是应用条件名称和位置,然后使用where
应用可选的必需值,但再次将所有这些值都放入内存中,可能会对性能产生影响,请问有没有更好的方法来处理此问题请求。
谢谢
解决方法
您必须使用Concat
进行此类查询
var baseQuery = from e in employee
where e.name == "test" && e.place == "us"
select e;
var byCity = from e in baseQuery
where e.city == "ny"
select e;
var byCountry = from e in baseQuery
where e.country == "testcounty"
select e;
var result = byCity
.Concat(byCountry)
.Concat(baseQuery)
.FirstOrDefault();
此查询的执行计划应由SQL Server或其他现代数据库优化。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。