如何同时应用2个过滤器来执行基于过滤器的搜索?

时间:2019-02-20 18:30:27

标签: c# sql asp.net

我有一个搜索页面,其中有2个过滤器。一个是城市,另一个是服务。 城市值在usertable中,其中city是column,服务值在另一个服务表中 当我搜索同时应用两个过滤器时,输出必须显示将两个结果合并到一个网格视图中的答案/

请提出逻辑我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果在SQL数据库中使用存储的proc,一种方法是编写一个以takdse city和service为参数的存储的proc,并使用SQL Join返回数据。在您的C#代码或类中,您可以调用SQL存储的proc并将其映射到DataTable并解析结果,然后对数据进行JSON序列化以将其发送回客户端。如果使用的是Enitity Framework,则可以对Linq查询执行相同的操作,并将其映射到c#模型对象。然后,您可以JSON序列化该数据并将其发送回客户端。在客户端代码上,您可以解析列表并将其显示在使用任何客户端框架的网格中。

这将有助于您了解有关服务器端和客户端框架的更多详细信息。

答案 1 :(得分:0)

您要使用SQL查询将2个表连接在一起。

您可以按照以下相同的方式做您想做的事情。

首先让我们想象2个表的结构,让我们选择“人”和“地址”作为我们的表。

这是人桌:

ID (PK AutoIncrement) | FirstName (nvarchar(50)) | LastName nvarchar(50)) | AddressID (int) |
1                     | Bob                      | Bobson                 | 8               |
2                     | Dob                      | Dobbers                | 9               |

这是地址表:

AddressID (PK AutoIncrement) | HouseNum (int)         | PostCode nvarchar(6)                        
8                            | 2                      | AL23FP                        
9                            | 37                     | AL23UR                     

您看到我们可以基于它们的AddressID来联接这些表,因为它们共享值。

因此您可以通过执行以下操作来查询这两个表:

SELECT h.FirstName + ' ' + h.LastName AS Name, a.PostCode FROM HUMAN h
INNER JOIN Adress a on h.AddressID = a.AddressID

这是将查询仅应用于具有不同表列名称的过滤器的基础。

INNER JOIN将仅保留两个表之间的匹配对应关系,如果两个表中都存在相互信息。

您可以看到其他Joins here