【发布时间】:2014-05-10 10:02:37
【问题描述】:
如何编写具有嵌套过滤器的 SQL 查询。
信息:2 个搜索过滤器
第一个过滤器:ID、姓名、日期
第二个过滤器:取决于第一个,对于Id:精确,范围;姓名:确切,喜欢;日期:准确,范围。
在 LINQ 代码中,它是这样完成的:
theList = somelistFromDb;
case filter1
case "Id"
if filter2 == "exact"
theList.where(x => x == searchkey);
else if filter 2 == "range"
theList.where(x => x >= searchkey && x<=searchkey2);
case "Name"
if filter2 == "exact"
theList.where(x => x == searchkey);
else if filter2 == "like"
theList.where(x => x.contains("searchkey));
...
如何将上述 LINQ 伪代码转换为 SQL?
【问题讨论】:
-
@MarcGravell - 如果它们在两个比较中是相同的值,我同意你的看法,但这里似乎涉及 3 个值(
x、searchKey和searchKey2) -
@Damien_The_Unbeliever 我错过了,ta
-
上述代码中的“theList”变量是从存储过程返回的。 SP 将“全部返回”,过滤和排序是在 C# 中完成的。任务是将上述伪代码合并到 SP 中,以便一切都在数据库服务器上完成以进行“优化”,并且返回的列表将已经被过滤和排序。顺便说一句,谢谢大家...
标签: c# sql sql-server linq tsql