.NET. Как получить определенные элементы из набора данных?

У меня есть следующий код, который соединяется с базой данных и сохраняет данные в наборе данных.

Теперь мне нужно сделать одно значение из набора данных (ну, собственно, его два столбца первой строки 4 и 5)

OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;

    DataSet ds = new DataSet();

    OdbcDataAdapter da = new OdbcDataAdapter("SELECT * FROM MTD_FIGURE_VIEW1", conn);

    da.Fill(ds)

Итак, мне нужно получить два конкретных элемента и сохранить их в ints, psudo-код будет

int var1 = ds.row1.column4
int var2 = ds.row1.column5

Любые идеи о том, как я могу это сделать?

Кроме того, может кто-то проливает свет на таблицы данных, так как это может быть связано с тем, как я это делаю.

Ответ 1

Вы можете сделать как...

Если вы хотите получить доступ, используя ColumnName

Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0]["column4Name"].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0]["column5Name"].ToString());

ИЛИ, если вы хотите получить доступ, используя Index

Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString());

Ответ 2

Объект DataSet имеет массив таблиц. Если вы знаете нужную таблицу, у нее будет массив строк, каждый объект которого имеет массив ItemArray. В вашем случае код скорее всего будет

int var1 = int.Parse(ds.Tables[0].Rows[0].ItemArray[4].ToString());

и т.д. Это даст вам 4-й элемент в первой строке. Вы также можете использовать столбцы вместо ItemArray и указывать имя столбца в виде строки, а не запоминать ее. Этот подход может быть легче поддерживать, если структура таблицы изменится. Так что это будет

int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString());

Ответ 3

Я предпочитаю использовать что-то вроде этого:

int? var1 = ds.Tables[0].Rows[0].Field<int?>("ColumnName");

или

int? var1 = ds.Tables[0].Rows[0].Field<int?>(3);   //column index

Ответ 4

int var1 = int.Parse(ds.Tables[0].Rows[0][3].ToString());
int var2 = int.Parse(ds.Tables[0].Rows[0][4].ToString());

Ответ 5

int intVar = (int)ds.Tables[0].Rows[0][n];   // n = column index