繁体   English   中英

ASP.net处理数据集中的数据

[英]ASP.net manipulate data in dataset

我已经设法连接到一个内部数据库,并从数据库中获取数据并将其存储在数据集中,我需要操纵数据集中的某些数据并执行以下操作,

在数据集中添加一个称为total的新列,对于每一行,我需要添加第二和第三列并将结果放入total列。

有人可以阐明我如何执行此操作,即时消息使用以下代码将数据获取到数据集中。

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

这是最简单的方法

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

以下是如何>处理数据集中的某些数据

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

如果您确定列值永远不会为null或为空,那么最好的方法是

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

如果您的任何列的值将为null,则不会给出任何异常,但总值也将为空...

如果可以有任何空值,请尝试此

           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"]);
        }

在这种情况下,如果您从不检查null或空值,则将为您提供运行时异常...

您是否考虑过让数据库完成工作

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

PS:您可能想摆脱选择*并使用columnames

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM