Циклы со списками - C#

130
18 сентября 2019, 15:50

Подскажите как правильно сделать. Есть список, с неопределенным количеством записей:

List<string> Sample= new List<string>();

Как этот список прогнать через SQL запрос по каждому значению индивидуально, например:

SELECT * FROM db WHERE c1 = "значение из LIST"
Answer 1

Давайте я покажу полный пример.

Во-первых, всегда нужно использовать параметры. Это обезопасит от sql-инъекций и ускорит выполнение запросов.
Во-вторых, всегда нужно освобождать занятые ресурсы, поэтому используем конструкцию using.
В-третьих, соблюдаем общепринятый нейминг.

Дано: заполненный список

List<string> samples = new List<string>();

Код:

using (var conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM table WHERE c1 = @param"; ;
        var sqlParameter = cmd.Parameters.Add("param", SqlDbType.NVarChar);
        foreach (var sample in samples)
        {
            sqlParameter.Value = sample;
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    // здесь получаем значения из ридера
                }
            }
        }
    }
}

Вы не указали, какую именно СУБД используете. В примере предполагается Sql Server. Если используется другая, замените, соответственно, SqlConnection и SqlDbType на нужные типы.

Answer 2

Выбирай любой из вариантов:

1.

List<string> strings = new List<string> {"a", "b", "asdf"};
//в даном случае это генерация листа, но можно и достать готовый из БД.
strings.ForEach(a=> Console.WriteLine(a)); //вывод в консоль каждого из элементов

2.

foreach(string item in strings) 
{ 
    Console.WriteLine(item);
}

3.

for(int i = 0; i < strings.Count; i++) 
{ 
    Console.WriteLine(strings[i]);
} 
  1. Если же нужен конкретно T-SQL, то я не подскажу, но это легко гуглится по запросу "transact sql foreach"
READ ALSO
Деплой на Github при помощи appveyor

Деплой на Github при помощи appveyor

Хотелось бы попробовать на открытом проекте деплой на GitHubНачал пробовать appveyor

106
Разработка проекта на WebGL в Unity

Разработка проекта на WebGL в Unity

Столкнулся с непростой ситуациейЗаказчик заказал игровой симулятор, но с условием, что он будет работать в вебе

142
Не запускается self-contained приложение Asp.Net Core

Не запускается self-contained приложение Asp.Net Core

Я разрабатываю self-contained приложение (автономное развертывание) на AspNET Core 2

104
Ошибка при отправке почты

Ошибка при отправке почты

Всем приветПишу приложение на ASP

119