从链接到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
您从while循环开始就迭代所有记录。你只需要迭代一次,就可以找到需要删除的记录,然后你就可以在这样的循环中删除它们:
var itemsToBeRemoved = listingDataTable.Where(x=>x.stock == key).ToList();
foreach (var item in itemsToBeRemoved)
listingDataTable.RemoveListingRow(item);