ASP.net манипулирует данными в наборе данных - PullRequest
1 голос
/ 15 июня 2011

Мне удалось подключиться к базе данных interbase, получить данные из базы данных и сохранить их в наборе данных, мне нужно манипулировать некоторыми данными в наборе данных и сделать что-то вроде следующего:

добавитьновый столбец в наборе данных с именем total, для каждой строки мне нужно добавить 2-й и 3-й столбцы и поместить результат в итоговый столбец.

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

    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);

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Это самый простой способ сделать это

 ds.Tables[0].Columns.Add("Sum", typeof(double), "Col1 + Col2");
1 голос
/ 15 июня 2011

Рассматривали ли вы, чтобы база данных выполняла свою работу

OdbcDataAdapter da = new OdbcDataAdapter("SELECT *, (col1+col2) as sum FROM MTD_FIGURE_VIEW1", conn);

PS: вы можете избавиться от выбора * и использовать столбцы

1 голос
/ 15 июня 2011

Если вы уверены, что значения вашего столбца никогда не будут нулевыми или пустыми, то лучшим способом будет

ds.Tables[0].Columns.Add("Sum", typeof(double), "Col1 + Col2");

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

Если может быть какое-либо нулевое значение, попробуйте это

           dt.Columns.Add("Total", typeof(double));
        foreach (DataRow dr in dt.Rows)
        {
            if (String.IsNullOrEmpty(dr["col1"].ToString()))
                dr["col1"] = 0.0;
            if (String.IsNullOrEmpty(dr["col2"].ToString()))
                dr["col2"] = 0.0;

            dr["Total"] = Convert.ToDouble(dr["col1"]) + Convert.ToDouble(dr["col2"]);
        }

В этом случае, если вы никогда не проверяете нулевое или пустое значение, это даст вамисключение времени выполнения ...

1 голос
/ 15 июня 2011

Ниже описано, как > манипулировать некоторыми данными в наборе данных

ds.Tables[0].Columns.Add("Sum", typeof(string));
foreach (DataRow drRow in ds.Tables[0].Rows)
{
    drRow["Sum"] = (Convert.ToInt32(drRow["Col1"].ToString()) + Convert.ToInt32(drRow["Col2"].ToString())).ToString();
}

- ОБНОВЛЕНИЕ -

Что-то вродедалее, используя троичный оператор:

drRow["Sum"] =
    (string.IsNullOrEmpty(drRow["Col1"].ToString()) ? 0.00 : Convert.ToDouble(drRow["Col1"].ToString())) +
    (string.IsNullOrEmpty(drRow["Col2"].ToString()) ? 0.00 : Convert.ToDouble(drRow["Col2"].ToString()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...