2010-01-28 47 views
1

我有一个数据集数据表3中,有许多领域与具有零,现在我想转换具有零NULL字段。任何想法,请帮助。转换零到数据集或数据表无效

+3

请邮寄到现在为止您编写的代码。人们通常不喜欢只为你写代码。 – 2010-01-28 05:48:10

回答

1

当然,理论上讲,你可以遍历整个DataSet,查找零值,并用NULL值(以.NET表示为DBNull.Value)代替它们。 (参见下面的代码示例。)

然而,注意,这可能是非常低效的,特别是具有大DataSet。恕我直言,最好避免这种情况,并让数据库从一开始就提供正确的数据。

这就是说,下面应该让你开始你如何可以遍历整个DataSet和替换零个值:

DataSet ds = ...; 

foreach (var dt in ds.Tables) 
{ 
    foreach (var dr in dt.Rows) 
    { 
     foreach (var dc in dt.Columns) 
     { 
      if (dr[dc].GetType() == typeof(int) && (int)dr[dc] == 0) 
      // the above condition might have to be more flexible, 
      // e.g. in order to also account for other integer types. 
      { 
       dr[dc] = DBNull.Value; 
      } 
     } 
    } 
} 

附::为了使这一点更有效,你可以先筛选各个DataTable的列,以便在最里面的循环中,您将只处理整数列。

+0

我这样做,但它是有点费时的表是巨大的.... 我想要的东西,当使用select查询的excel表我想转换零为空,以减少创建的XML的大小有如在数据集外 从[WK11 GAAP IS详细信息$ C4:EX135]中选择* – Sathish 2010-01-28 06:09:05

+0

那么也许您应该使用'IDataReader'手动(逐行)手动(逐行)构建您的DataSet(或更确切的说是DataTable对象) (也可能是'IDataAdapter')。这将允许你在正确的数据,你从数据库中读取转换的'DataTable's,而不必做就地更换的第2次以后。 – stakx 2010-01-28 06:11:58

+0

感谢您的咨询 – Sathish 2010-01-28 06:26:22