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

时间:2011-10-17 06:59:49

标签: c# dataset

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;
    }

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

该功能有效,但速度很慢。删除7000行需要10到15分钟。它必须是更好的方式,但如何?

最好的问候 Gorgen

1 个答案:

答案 0 :(得分:0)

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

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