эффективное удаление строки из набора данных, связанного с базой данных SQL - PullRequest
2 голосов
/ 17 октября 2011

Hello everone
Я удаляю строки из набора данных.Все строки, которые я хочу удалить, имеют общее, что столбец имеет одинаковое значение, следовательно, .FirstOrDefault(x => x.stock == key), который, кстати, является int.

 public bool RemoveStock(string tickerName) {       
        bool couldBeRemoved = false;
        int key = this.getKeyFromtickerName(tickerName);
        stockDataSet.ListingRow found = 
            listingDataTable.FirstOrDefault(x => x.stock == key);

        while (found != null) {
            listingDataTable.RemoveListingRow(found);     
            found = listingDataTable.FirstOrDefault(x => x.stock == key);
        }

        listingTa.Update(listingDataTable);
        listingDataTable.AcceptChanges();
        return couldBeRemoved;
    }

edit Время в цикле.Я предполагаю, что функция .FirstOrDefault начинается с начала набора данных, и у меня есть около 2,5 миллионов строк, если я правильно помню. end edit

Функция работает, но мучительно медленно.Для удаления 7000 строк требуется порядка 10 - 15 минут.Это должен быть лучший способ, но как?

С наилучшими пожеланиями
Gorgen

1 Ответ

0 голосов
/ 17 октября 2011

Вы итерируете все записи с самого начала в цикле while. Вы можете просто повторить его один раз, чтобы найти записи, которые нужно удалить, и затем вы можете удалить их в цикле, например:

var itemsToBeRemoved = listingDataTable.Where(x=>x.stock == key).ToList();
foreach (var item in itemsToBeRemoved) 
              listingDataTable.RemoveListingRow(item);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...