Каков наилучший способ получить одно значение из набора данных?

99
10

У меня есть набор данных, в котором должно быть только одно значение, что является лучшим способом получить это одно значение и в целое число?

спросил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
1
Решение
117

SqlCommand.ExecuteScalar

// setup sql command and sql connection etc first...
int count = (int) cmd.ExecuteScalar();

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
98

См. новую функцию С# 3.0 "Методы расширения"
Вы можете определить свой собственный метод расширения для любого класса.
Например:


namespace MyEx;

public static class MyExtensions
{
public static object SingleValue(this DataSet ds)
{
return ds.Tables[0].Rows[0][0];
}
}

После его использования:


using MyEx;

public class Class1
{
public void Test()
{
DataSet ds = new DataSet();
object value = ds.SingleValue();
}
}

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
63

if (ds.Tables[0].Rows.Count > 0) {
int i = Convert.ToInt32(ds.Tables[0].Rows[0]["colname"]);
}

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
45

вы можете сделать это:


dt = ds.Tables["TableName"];
Convert.ToInt32(dt.Rows[rowNumber]["ColumnName"].ToString());

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
45

Вы можете сделать это вот так:


int myVar =
Convert.ToInt32(dsMyDataSet.Tables["MyTable"].Rows[intRowPos]["MyColumn"].Tostring());

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
45

лучшим способом было бы не писать одно значение в наборе данных.


но если вы не можете избежать этого:


try
{
//if the value is coming back as string
int value1 = Int32.Parse(ds.Tables[0].Rows[0][0].ToString());
//if the value is already an integer
int value2 = (int)ds.Tables[0].Rows[0][0];
}
catch(Exception ex)
{
throw new Exception("You do not have even a single value in the DataSet or its not an integer!", ex);
}

ответил(а) 2021-01-25T20:50:01+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема