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

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

Изменено 03.05.2016 11:16 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(). Он умеет отслеживать дубликаты по первичному ключу.

Извините, если посоветовал банальность.
Здравствуйте, 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().