代码之家  ›  专栏  ›  技术社区  ›  char m

如何在C/ADO.NET 2.0中获得用DataTable.NewRow()创建的行?

  •  2
  • char m  · 技术社区  · 15 年前

    现在我使用Select并使用只选择新行的条件。但是有没有什么GetInsertedRows方法。如果我没记错的话,每一行都有一个状态,所以很自然地,人们可以循环浏览所有行,但这并不优雅。

    -干杯-马蒂

    2 回复  |  直到 15 年前
        1
  •  2
  •   Henk Holterman    15 年前

    我喜欢TypeT的答案,但知道始终通过DataView绑定到DataTable可能会有所帮助,您可以将其设置为按行状态进行筛选:

    myDataSet.myTable.DefaultView.RowStateFilter = DataViewRowState.Added;
    

    var addedView = new DataView(myDataSet.myTable);
    addedView.RowStateFilter = DataViewRowState.Added;
    
        2
  •  1
  •   djdd87    15 年前

    不久前我自己也遇到过这个问题,但是没有好的方法来删除添加的行。我刚刚为你搜遍了我的仓库找到了 DataTable 我以前使用的实现:

    public class AdvancedDataTable : DataTable
    {
        public IEnumerable<DataRow> InsertedRowList
        {
            get
            {
                foreach (DataRow row in this.Rows)
                {
                    if (row.RowState == System.Data.DataRowState.Added)
                    {
                        yield return row;
                    }
                }
            }
        }
    }
    

    它仍在进行迭代,但它很好地包装为 IEnumerable 而且你不需要写一次以上的代码。