public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection)
        {
            string userName = (string)context["UserName"];

            var propertyValues = collection.Cast<SettingsProperty>()
                                           .Select(p => new SettingsPropertyValue(p))
                                           .ToArray();

            if (repository.ContainsKey(userName))
            {
                var userProperties = repository[userName];

                foreach (var pv in propertyValues)
                    pv.PropertyValue = userProperties[pv.Name];
            }

            var result = new SettingsPropertyValueCollection();
            foreach (var pv in propertyValues)
                result.Add(pv);

            return result;
        }
 private bool DoesNotContainDefaultColumns(SettingsPropertyCollection collection)
 {
     return
         !collection.Cast<SettingsProperty>()
                    .Any(
                        value =>
                        string.Compare(
                            value.Name, this.membershipProvider.UserIdColumn, StringComparison.OrdinalIgnoreCase)
                        == 0
                        || string.Compare(
                            value.Name, 
                            this.membershipProvider.UserEmailColumn, 
                            StringComparison.OrdinalIgnoreCase) == 0);
 }