internal void Update(UserInventoryApp sameApp) { if (AppId != sameApp.AppId) { return; } Name = sameApp.Name ?? Name; Icon = sameApp.Icon ?? Icon; StoreVetted = sameApp.StoreVetted ?? StoreVetted; InventoryLogo = sameApp.InventoryLogo ?? InventoryLogo; TradePermissions = sameApp.TradePermissions ?? TradePermissions; foreach (var context in Contexts) { var newContext = sameApp.Contexts.FirstOrDefault(c => c.ContextId == context.ContextId); if (newContext != null) { context.Update(newContext); } } Contexts = Contexts.Concat(sameApp.Contexts.Where(c1 => Contexts.All(c2 => c1.ContextId != c2.ContextId))) .ToArray(); }