private static async Task RemoveDynamicCategoryAndItsDynFields2Async(string catId, DBManager dbM, ICollection<DynamicCategory> dynamicCategories, ICollection<DynamicField> dynamicFields) { if (!string.IsNullOrWhiteSpace(catId) && dbM != null) { var dynCat = dynamicCategories.FirstOrDefault(a => a.CategoryId == catId); if (dynCat != null) { var descriptionIdsOfFieldsToBeRemoved = new List<string>(); if (await dbM.DeleteFromDynamicCategoriesAsync(dynCat, descriptionIdsOfFieldsToBeRemoved)) { dynamicCategories.Remove(dynCat); await dynCat.CloseAsync(); // no need to open dynCats foreach (var fieldDescriptionId in descriptionIdsOfFieldsToBeRemoved) { var fieldToBeRemoved = dynamicFields.FirstOrDefault(dynFld => dynFld.FieldDescriptionId == fieldDescriptionId); if (fieldToBeRemoved != null) { dynamicFields.Remove(fieldToBeRemoved); await fieldToBeRemoved.CloseAsync(); // no need to open dynFlds } } } } } }