Информация об изменениях

Сообщение Re: DataTable.Select vs List<T>.Any vs LINQ To DataTable от 03.05.2016 11:02

Изменено 03.05.2016 11:17 Mihas

Здравствуйте, Berill, Вы писали:

Советы еще принимаются?

Вместо тормознутого DataTable.Select() мне нравится такой способ выборки нужных строк:

var allRows = table.Rows.Cast<DataRow>();
var filteredRows = allRows.Where(r => r["TYPE_CODE"] == addingRowInfo.TypeCode).Where(r => r["DETAIL_ID"] == addingRowInfo.DetailID).ToList();


Если избавиться от замыканий, то работает вполне себе шустро.

Пополнять же таблицу новыми строками можно методом Merge(). Он умеет отслеживать дубликаты по первичному ключу.

Извините, если посоветовал банальность.

PS. А еще есть чудесный метод DataTable.Rows.Find(). Он работает только с первичным ключом, но очень быстро. В нашем случае было настолько быстро, что было выгоднее переназначить первичный ключ на другую колонку, чем использовать DataTable.Select().
Re: DataTable.Select vs List<T>.Any vs LINQ To DataTable
Здравствуйте, Berill, Вы писали:

Советы еще принимаются?

Вместо тормознутого DataTable.Select() мне нравится такой способ выборки нужных строк:

var allRows = table.Rows.Cast<DataRow>();
var filteredRows = allRows.Where(r => r["TYPE_CODE"] == addingRowInfo.TypeCode).Where(r => r["DETAIL_ID"] == addingRowInfo.DetailID).ToList();


Если избавиться от замыканий, то работает вполне себе шустро.

Пополнять же таблицу новыми строками можно методом Merge(). Он умеет отслеживать дубликаты по первичному ключу.

PS. А еще есть чудесный метод DataTable.Rows.Find(). Он работает только с первичным ключом, но очень быстро. В нашем случае было настолько быстро, что было выгоднее переназначить первичный ключ на другую колонку, чем использовать DataTable.Select().

Извините, если посоветовал банальность.