Как получить строки, созданные с помощью DataTable.NewRow () в C # / ADO.NET 2.0? - PullRequest
2 голосов
/ 15 мая 2010

Теперь я использую Select и использую критерии, которые выбирают только новые строки.Но есть ли какой-нибудь метод GetInsertedRows.Если я правильно помню, есть статус для каждой строки, поэтому, естественно, можно пройти через все циклы, но это не элегантно.

-Cheers -Matti

Ответы [ 2 ]

2 голосов
/ 16 мая 2010

Мне нравится ответ TypeT, но это может помочь узнать, что вы всегда привязываете через DataView к DataTable и можете настроить его для фильтрации по состоянию строк:

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

Вы также можете создать дополнительный DataView для просмотра новых или удаленных строк, и тогда эти представления не будут байтовать друг друга:

var addedView = new DataView(myDataSet.myTable);
addedView.RowStateFilter = DataViewRowState.Added;
1 голос
/ 15 мая 2010

Я сам сталкивался с этой проблемой некоторое время назад, однако нет хорошего способа вытащить добавленные строки. Я только что просмотрел свои репозитории для вас и нашел реализацию 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, и вам не придется писать код более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...