Объединение нескольких полей в C# - PullRequest
0 голосов
/ 18 января 2020

Я работаю над приложением Windows Forms, в котором у меня есть форма для заключенного, которая берет всю основную c информацию о заключенном, его домашний адрес и все остальное.

У меня есть два комбобокса, один из которых является родительским комбобоксом для State, а другой - дочерним, а для City. Значения выпадающего списка City зависят от выбранного элемента из выпадающего списка State.

Например, если admin выбирает «State1» из поля со списком State, то значения в поле со списком City отображаются как «City1», «City2», «City3» и c. и если admin выбирает «State2» из поля со списком State, то значения в поле со списком City отображаются как «City4», «City5», «City6» и т. д. c.

. У меня есть это для хранения значения City ComboBox:

sql_com.Parameters.AddWithValue("@City", City_ComboBox.SelectedItem);

Все, что я хочу знать, - это способ объединить несколько полей в этом коде. Скажем, у меня есть несколько комбинированных списков City с именами "City_ComboBox1", "City_ComboBox2" и "City_ComboBox3".

Есть ли способ сделать что-то вроде этого:

sql_com.Parameters.AddWithValue("@City", City_ComboBox1.SelectedItem + City_ComboBox2.SelectedItem + City_ComboBox3.SelectedItem);

Но я получить ошибку.

Ответы [ 3 ]

2 голосов
/ 18 января 2020

Есть несколько способов сделать это. Один с методом string.Format().

string cityString = string.Format("{0} {1} {2}", City_ComboBox1.SelectedItem, City_ComboBox2.SelectedItem, City_ComboBox3.SelectedItem);
sql_com.Parameters.AddWithValue("@City", cityString);

string.Format позволяет вам создать своего рода шаблон того, как вы хотите, чтобы строка выглядела. Вы используете заполнитель {#} с номером, который соответствует индексу значений, которые вы передаете. И вы можете использовать эти заполнители несколько раз в шаблоне. Все, что вы передаете в метод после первого строкового значения, преобразуется в строку.

Стоит также отметить, что хотя AddWithValue прост в использовании, оно может вызвать проблемы по мере роста вашего приложения. Рекомендуется использовать

sql_com.Parameters.Add("@City", SqlDbType.NVarChar, 64).Value = cityString;

Но вы замените NVarChar и 64 значениями, соответствующими настройке столбца вашей базы данных. См https://www.dbdelta.com/addwithvalue-is-evil/

0 голосов
/ 06 февраля 2020

string.Concat

sql_com.Parameters.Add("@City", SqlDbType.NVarChar, 64).Value = string.Concat(City_ComboBox1.SelectedItem, City_ComboBox2.SelectedItem, City_ComboBox3.SelectedItem)

string.join

var join = ",";
    sql_com.Parameters.Add("@City", SqlDbType.NVarChar, 64).Value = string.Join(join  ,City_ComboBox1.SelectedItem, City_ComboBox2.SelectedItem, City_ComboBox3.SelectedItem)
0 голосов
/ 18 января 2020

Другим простым способом является использование Interpolated Strings со знаком $ следующим образом:

string cityString = $"{City_ComboBox1.SelectedItem} {City_ComboBox2.SelectedItem} {City_ComboBox3.SelectedItem}";
sql_com.Parameters.AddWithValue("@City", cityString);

путем добавления $ перед строкой и внутри этой строки просто поместите любую переменную в фигурных скобках {variableName}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...