Как получить определенное значение столбца от DataTable?

У меня есть таблица данных. Я должен выбрать определенное значение столбца на основе ввода данных пользователем. Например, позволяет, говорят, что таблица данных имеет два столбца CountryID и CountryName.

Я должен найти CountryID в таблице данных на основе названия страны ввода данных пользователем. Я мог просто открыть соединение с DB и работать, запрос выбирают countryID из Страны где countryName = @userinput. Есть ли так или иначе, я мог сделать это на таблице данных.

38
задан John Saunders 26 May 2010 в 21:10
поделиться

4 ответа

string countryName = "USA";
DataTable dt = new DataTable();
int id = (from DataRow dr in dt.Rows
              where (string)dr["CountryName"] == countryName
              select (int)dr["id"]).FirstOrDefault();
66
ответ дан 27 November 2019 в 03:14
поделиться

Я полагаю, вы могли бы использовать вместо этого объект DataView, тогда это позволило бы вам воспользоваться преимуществом свойства RowFilter, как описано здесь:

http://msdn.microsoft.com/en-us/library/system. data.dataview.rowfilter.aspx

private void MakeDataView() 
{
    DataView view = new DataView();

    view.Table = DataSet1.Tables["Countries"];
    view.RowFilter = "CountryName = 'France'";
    view.RowStateFilter = DataViewRowState.ModifiedCurrent;

    // Simple-bind to a TextBox control
    Text1.DataBindings.Add("Text", view, "CountryID");
}
1
ответ дан 27 November 2019 в 03:14
поделиться
foreach (DataRow row in Datatable.Rows) 
{
    if (row["CountryName"].ToString() == userInput) 
    {
        return row["CountryID"];
    }
}

Хотя это может не компилироваться напрямую, вы должны уловить идею, но я уверен, что было бы намного лучше сделать запрос через SQL в виде огромной таблицы данных займет много времени, чтобы пройти через все строки.

19
ответ дан 27 November 2019 в 03:14
поделиться

Таблицы данных имеют метод .Select, который возвращает массив строк в соответствии с указанными вами критериями. Примерно так:

Dim oRows() As DataRow

oRows = dtCountries.Select("CountryName = '" & userinput & "'")

If oRows.Count = 0 Then
   ' No rows found
Else
   ' At least one row found. Could be more than one
End If

Конечно, если пользовательский ввод содержит символ ', это вызовет исключение (например, если вы запросите базу данных). Вы должны экранировать символы '(для этого я использую функцию).

1
ответ дан 27 November 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: