从链接到SQL数据库的数据集中高效地删除行

本文关键字:集中 数据集 高效 删除行 数据 链接 SQL 数据库 | 更新日期: 2023-09-27 18:11:31

大家好
我正在从数据集中删除行。我要删除的所有行都有一个共同点,即列具有相同的值,因此.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;
    }

编辑在循环中花费的时间。我假设函数.FirstOrDefault从数据集的开头开始,如果我没记错的话,我有大约250万行结束编辑

功能正常,但速度慢得令人痛苦。删除7000行需要10-15分钟。这一定是一种更好的方式,但怎么做呢?

问候
Gorgen

从链接到SQL数据库的数据集中高效地删除行

您从while循环开始就迭代所有记录。你只需要迭代一次,就可以找到需要删除的记录,然后你就可以在这样的循环中删除它们:

var itemsToBeRemoved = listingDataTable.Where(x=>x.stock == key).ToList();
foreach (var item in itemsToBeRemoved) 
              listingDataTable.RemoveListingRow(item);