Member 14743579 Ответов: 1

Как я могу сравнить массив или список с таблицей и показать данные на gridview


Я пытаюсь фильтровать данные с помощью флажков с помощью массива или списка, сравнивать данные, которые хранятся в массиве или списке, с co.

Что я уже пробовал:

я попробовал этот код, но он работает не идеально, я имею в виду, что данные присутствуют в массиве/списке, но я понятия не имею, как сравнить эти данные с таблицей.

[HttpPost]
       public JsonResult Dummmyy1(RegisterModel model)

       {

           string[] dum = { "ddd", "aaa", "fff", "bbb" };
          string[] data = model.array;
           var sqlcommand = new SqlCommand();


           List<RegisterModel> consultantList = new List<RegisterModel>();  // creating list of model.
           using (DBClass context = new DBClass())
           {




              DataTable dt = context.getData("Select * from emp_detail where EState in (@PARAM)", CommandType.Text);
               sqlcommand.Parameters.Add(new SqlParameter(@"@PARAM", String.Join(",", data)));

1 Ответов

Рейтинг:
0

Richard Deeming

Вы не можете передать несколько значений одному параметру, а затем использовать этот параметр с помощью IN пункт.

Самое простое решение-передать несколько параметров:

using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand())
{
    command.Connection = connection;
    command.CommandType = CommandType.Text;
    
    var parameterNames = new List<string>(data.Count);
    foreach (string item in data)
    {
        string name = "@p" + command.Parameters.Count;
        command.Parameters.AddWithValue(name, item);
    }
    
    command.CommandText = string.Format(
        "SELECT * FROM emp_detail WHERE EState In ({0})",
        string.Join(", ", parameterNames));
    
    var dt = new DataTable();
    var da = new SqlDataAdapter(command);
    da.Fill(dt);
    
    ... DO SOMETHING WITH THE DATA HERE ...
}
Существуют и другие доступные подходы - например:
Массивы и списки в SQL Server (Полная история)[^]
Использование табличных параметров в SQL Server и .NET[^]


Member 14743579

Объект DataTable ДТ = контекст.метода GetData("выбрать * из emp_detail где имущества = любой(" +данные+ ")", свойство commandtype.Текст);

В приведенном выше коде данные-это имя массива, могу ли я сравнить массив с sql в коде c#

Richard Deeming

Этот код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.