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

发布于 2024-09-01 08:09:10 字数 116 浏览 4 评论 0原文

现在我使用 Select 并使用仅选择新行的条件。但是有没有任何类型的 GetInsertedRows 方法。如果我没记错的话,每一行都有状态,因此自然可以循环遍历所有行,但这并不优雅。

-干杯-马蒂

Now I use Select and use a criteria which select only new rows. But is there any kind of GetInsertedRows-method. If I remember correctly there is status for each row so naturally one can loop through them all but that's not elegant.

-Cheers -Matti

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罪#恶を代价 2024-09-08 08:09:11

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

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

您还可以创建一个额外的 DataView 来查看新的或删除的行,然后这些视图不会互相字节:

var addedView = new DataView(myDataSet.myTable);
addedView.RowStateFilter = DataViewRowState.Added;

I like TypeT's answer but it may help to know that you always bind through a DataView to a DataTable and you can set it to filter on the rows state:

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

You can also create an additional DataView to look at the new or deleted rows, and then those Views won't byte each other:

var addedView = new DataView(myDataSet.myTable);
addedView.RowStateFilter = DataViewRowState.Added;
傲娇萝莉攻 2024-09-08 08:09:11

我自己不久前也遇到过这个问题,但是没有很好的方法来提取添加的行。我刚刚为您搜索了我的存储库,找到了我曾经使用的 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,您将不会'不必多次编写代码。

I came across this issue myself a while ago, however there's no nice way of pulling out the added rows. I've just trawled my repositories for you and found the DataTable implementation I used to use:

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

It's still doing an iteration, but it's nicely wrapped as an IEnumerable and you won't have to write the code more than once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文