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