Я пытаюсь обновить и обновить существующую коллекцию ObservableCollection (с приблизительно 2,3-миллионными объектами в списке) новыми элементами, извлеченными из процедуры SQL. Когда я получаю последние категории, я получаю список с около 72000 наименований. Моя функция, созданная для обновления и обновления коллекции, работает очень хорошо, но на многих обновленных элементах она становится очень медленной и имеет низкую производительность. Как я могу сделать это более эффективным и лучшим способом?
public async Task UpdateAndRefreshContractMetaDataCollection(ObservableCollection<Category> Categories)
{
Type type = typeof(Category);
var updatedCategories = await GetLatestUpdatedCategories();
if (updatedCategories .Count != 0)
{
try
{
int i = 0;
foreach (var category in updatedCategories )
{
var categoryCopy = Categories.FirstOrDefault(_ => _.ID== category.ID);
if (categoryCopy != null)
{
i+=1;
if (!compareLogic.Compare(categoryCopy , category ).AreEqual)
{
mapper.Map<Category, Category>(category , categoryCopy );
}
else
{
Categories.Add(category );
}
}
}
}
catch (Exception e) {
MessageBox.Show("Error updating categories", e.Message);
}
}
}