如何在C#中遍历数据集并更改数据

3
我正在尝试循环遍历数据集,无论何时出现0,我都希望将其更改为null值或空白。到目前为止,我有以下代码:
foreach (DataRow drRow in ds.Tables[0].Rows)
{            
     //loop through cells in that row
      {
        //if the value is 0 change to null or blank
      }
}

有人能帮我解决这个问题吗?


如果任务是将所有零替换为“NULL”,只需编写SQL UPDATE语句并执行脚本。加载数据到“dataset”的目的是什么?为什么要使用C#?在我看来,SQL脚本是更好的解决方案。 - Nika G.
3个回答

3
当然。
foreach (DataRow drRow in ds.Tables[0].Rows)

    {
        for(int i = 0; i < ds.Tables[0].Columns.Count; i++)
        {
            int rowValue;

            if (int.TryParse(drRow[i].ToString(), out rowValue))
            {
                if (rowValue == 0)
                {
                    drRow[i] = null;
                }
            }

        }
    }

我真的相信没有人还在使用数据集 :(


仍然存在一些情况,其中 DataSet 是一个有效的选择。 - thekip
我使用数据集的唯一原因是我尝试连接到Interbase数据库并操纵数据,然后在图表和网格视图中显示新数据。您能否提供更好的方法? - c11ada
我不会评判你。这取决于你的具体情况,对我来说最好使用一些更酷的数据层。你可以使用标准方言的 Nhibernate,但对于你的情况可能过于复杂。DataSets 已经过时了,不适合处理数据。 - Restuta
有时候,您只想从A模块传递一个任意表格到B模块。使用数据集允许您修改表格而不会影响其他代码。如果您有一个静态类型的对象,并且想要添加属性,则必须重新编译所有内容,这并非总是可行的。 - thekip
如果您需要将模块A中的一些数据传递给模块B,而不使用静态类型,为什么不使用动态类型呢? - Restuta
我不确定这里是否有人使用_batch_(允许您将多个 SQL 语句作为一个执行)。我认为这是使用 DataSet 的一个例子。 - Bronson

0

这样的代码可能会有所帮助:

foreach (DataRow rows in table.Rows)
{
    object value = null;
    var cells = rows.ItemArray;
    for (int i = 0; i < cells.Length; i++)
    {
        value = cells[i];
        if (value != null && value.GetType() == typeof(int))
        {
            if ((int)value == 0)
            {
                cells[i] = null;
            }
        }
    }
    rows.ItemArray = cells;
}

0

你可以这样做

DataTable dt = new DataTable();
.....
.....

    DataRowCollection drColl = dt.Rows;
                for(int j=0; j<drColl.Count;j++) 
                {
                    DataRow drRow = drColl[j];
                    object[] itemArr = null;
                    itemArr = drRow.ItemArray;
                    //loop through cells in that row       
                    for(int i=0; i<itemArr.Length; i++)
                    {         
                        //if the value is 0 change to null or blank 
                        if (itemArr[i].ToString() == "0")
                            drRow[i] = "";
                    } 
                } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接