Объедините три DataRow или выберите несколько столбцов в одном запросе в один DataRow - PullRequest
0 голосов
/ 03 апреля 2020

Я создал настольное приложение в C#, где я ищу строки в одном столбце в базе данных, и если эта строка присутствует в этом столбце, я добавляю все строки, содержащие эту строку, в массив DataRow. После того, как я заполнил массив DataRow строками, я показываю их в DataGridView.

Пример того, как я делаю это сегодня, и работает нормально.

DataRow[] drArray;
// Get all rows that contains the searchstring in that column
drArray = this.ds.Tables[0].Select("NameOfColumn" + " LIKE '%" + TextBoxSearch.Text + "%'");
DataTable dtTemp = new DataTable();
dtTemp = this.ds.Tables[0].Clone();
// Fill DataGridView with rows
foreach (DataRow dr in drArray)
{
    dtTemp.ImportRow(dr);
}
dataGridView1.DataSource = dtTemp;

Но теперь вопрос. Я хочу расширить функциональность поиска, чтобы выполнить поиск строки, которую я хочу сопоставить, из 4 разных столбцов, и для каждого из этих 4 столбцов, в которых есть эта строка, я хочу заполнить эту строку в моем массиве DataRow.

Что-то вроде добавления каждой строки запросов в массив

DataRow[] drArray;
drArray = this.ds.Tables[0].Select("NameOfColumn_1" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray = (also add this to array) this.ds.Tables[0].Select("NameOfColumn_2" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray = (also add this to array) this.ds.Tables[0].Select("NameOfColumn_3" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray = (also add this to array) this.ds.Tables[0].Select("NameOfColumn_4" + " LIKE '%" + TextBoxSearch.Text + "%'");

Или получить все строки по запросу всех столбцов в одном запросе

DataRow[] drArray;
drArray = this.ds.Tables[0].Select("NameOfColumn_1","NameOfColumn_2","NameOfColumn_3","NameOfColumn_4" + " LIKE '%" + TextBoxSearch.Text + "%'");

Или как объединить 4 массива DataRow

DataRow[] drArray_1;
DataRow[] drArray_2;
DataRow[] drArray_3;
DataRow[] drArray_4;
drArray_1 = this.ds.Tables[0].Select("NameOfColumn_1" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray_2 = this.ds.Tables[0].Select("NameOfColumn_2" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray_3 = this.ds.Tables[0].Select("NameOfColumn_3" + " LIKE '%" + TextBoxSearch.Text + "%'");
drArray_4 = this.ds.Tables[0].Select("NameOfColumn_4" + " LIKE '%" + TextBoxSearch.Text + "%'");
DataRow drCombined = drArray_1 + drArray_2 + drArray_3 + drArray_4

Надеюсь, вы поняли, какой код я здесь ищу :) Итак, у кого-нибудь есть идеи, как решить эту проблему самым простым способом?

...