C# 在SQL Server中使用多个参数进行搜索

C# 在SQL Server中使用多个参数进行搜索,c#,sql,sql-server,C#,Sql,Sql Server,这个问题与c#和SQL Server都有关 我想知道如何进行自定义搜索 我有三张桌子 客户 CusId, Name, Telephone 员工 EmpId, Name, Job 预约 AppId, Date, EmpId, CusId 我的C#表有三个复选框。我想根据这些检查值查找数据 例如:选中“客户”、“员工”、“应用程序”复选框后,我希望根据这三个值查找数据 当只选择了两个或一个时,我希望根据这些选择进行搜索。这里总共有6种组合 当我将这些值作为参数传递给存储过程时,如何编写查询以获

这个问题与c#和SQL Server都有关

我想知道如何进行自定义搜索

我有三张桌子

客户

CusId, Name, Telephone
员工

EmpId, Name, Job
预约

AppId, Date, EmpId, CusId
我的C#表有三个复选框。我想根据这些检查值查找数据

例如:选中“客户”、“员工”、“应用程序”复选框后,我希望根据这三个值查找数据

当只选择了两个或一个时,我希望根据这些选择进行搜索。这里总共有6种组合

当我将这些值作为参数传递给存储过程时,如何编写查询以获得正确的结果

我是否必须编写6个存储过程才能得到结果

有什么方法可以轻松做到这一点吗


请帮我解决这件事。提前感谢。

带有如下查询(在存储过程中建议):


然后,您需要适当地传递参数,如果选择了ID,则传递一个ID,如果没有对一个项目进行过滤,则传递null。

您已经尝试了什么,如何从C#(entity framework,ADO.NET…)访问数据库,您是否可以使用存储过程,是否正在编写文本查询(使用参数以防止SQL注入)?所有这些都可能会改变答案,所以告诉我们您尝试了什么将有助于回答这个问题。如果您使用EF,这是微不足道的。如果您不这样做,它仍然很容易,但需要更多的代码。如何访问数据库?另一方面,3个选项代表8个组合,而不是6个是的,我使用的是EF.)
-- Parameters to a SQL sproc
DECLARE @CustID INT, @EmpID INT, @AppointmentID INT

-- Set Parameters here for testing

SELECT *
FROM Appointment as A
INNER JOIN Employee as E
  ON E.EmpID = A.EmpId
INNER JOIN Customer as C
  ON C.CusID = A.CusID
WHERE (@CustID IS NULL OR C.CUsID = @CustID)
AND (@EmpID IS NULL OR E.EmpID = @EmpID)
AND (@AppointmentID IS NULL OR A.AppID = @AppointmentID)