搜索功能的概念

Ker*_*zoz 6 c# asp.net visual-studio

我正在使用C#ASP.NET并计划制作一个需要5个参数作为搜索条件的搜索功能让我们使用3个条件来制作示例:a,b和c

问题:我是否需要将所有7种可能的搜索功能:

直接连接数据库(SQL)

  1. 搜索结果仅基于条件a
  2. 条件a +条件b
  3. 条件a +条件b +条件c
  4. 条件a +条件c
  5. 仅限条件b
  6. 条件b +条件c
  7. 仅限条件c

或者是否可以从数据库(SQL)创建表的列表并在C#aspx.cs中创建一个条件?

我不会问关于示例代码,我只是要求提供简化编码搜索功能的概念,因为我至少有5个条件,这将使我至少做25个不同的搜索功能所有搜索的可能性.谢谢.

csh*_*pbd 3

可以从数据库(SQL)执行,这将是最好的解决方案。您必须Stored Procedure为此进行创建,如下所示。

SQL:

Create Proc SP_Search(@A Int, @B NVarChar(20), @C Int)
    As
Begin
    If @A = 0 Set @A = Null
    If @B = '' Set @B = Null
    If @C = 0 Set @C = Null

    Select * From Table Where (A=@A Or @A Is Null) And (B=@B Or @B Is Null) And (C=@C Or @C Is Null)
End
Run Code Online (Sandbox Code Playgroud)

我来解释一下上面的SQL。它将接受 param@A@B中的输入@C。如果@A0设置@A = Null。在(A=@A Or @A Is Null)条件下工作就像一个可选参数。如果@A有某个值,则条件将适用,如果为空,则条件将被忽略。您可以像这样添加更多参数。

  1. 仅基于条件a的搜索结果 Exec SP_Search 1,'',0
  2. 条件a+条件b Exec SP_Search 1,'A',0
  3. 条件a+条件b+条件c Exec SP_Search 1,'A',1
  4. 条件a+条件c Exec SP_Search 1,'',1
  5. 仅条件b Exec SP_Search 0,'A',0
  6. 条件b+条件c Exec SP_Search 0,'A',1
  7. 仅条件c Exec SP_Search 0,'',1

调用的 C# 代码Stored Procedure

int A = 1;
string B = "A";
int C = 1;
using (SqlConnection conn = new SqlConnection("Connection String")) {
    conn.Open();
    SqlCommand cmd  = new SqlCommand("SP_Search", conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@A", A));
    cmd.Parameters.Add(new SqlParameter("@B", B));
    cmd.Parameters.Add(new SqlParameter("@C", C));
    using (SqlDataReader reader = cmd.ExecuteReader()) {
        while (reader.Read())
        {
            //Read Your Data Here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)