-1
我正在使用devexpress控件。下面的代碼用於selectionChanged事件。數據量巨大時,for循環會導致性能下降。有什麼方法可以優化這個嗎?for循環性能較差的大數據
for (int i = 0; i < gridView.RowCount; i++)
{
int currentHandle = gridView.GetVisibleRowHandle(i);
var row = gridView.GetRow(currentHandle) as xxxx;
if (gridView.IsRowSelected(currentHandle) && !listSelectedItems.Contains(row))
{
listSelectedItems.Add(row);
}
else if (!gridView.IsRowSelected(currentHandle) && listSelectedItems.Contains(row))
{
listSelectedItems.Remove(row);
}
}
gridControl2.Datasource = listSelectedItems;
//sometimes refresh datasource is also slow and I tried using beginupdate and endupdate but they never helped
gridControl2.RefreshDatasource();
也許分配的'listSelectedItems.Contains()'爲BOOL的回報,你在同樣的功能,這意味着它會經過整個集合兩次 – maccettura
兩次檢查它的' Remove()'調用可能會很昂貴,如果它被調用了很多。如果你不需要選擇的項目集合,你可以使用'HashSet'。 – adv12