public static void Patch <TEntityType>(this System.Web.OData.Delta <TEntityType> d, TEntityType original, String[] includedProperties, String[] excludedProperties) where TEntityType : class { Dictionary <string, PropertyAccessor <TEntityType> > _propertiesThatExist = InitializePropertiesThatExist <TEntityType>(); var changedProperties = d.GetChangedPropertyNames(); if (includedProperties != null) { changedProperties = changedProperties.Intersect(includedProperties); } if (excludedProperties != null) { changedProperties = changedProperties.Except(excludedProperties); } PropertyAccessor <TEntityType>[] array = ( from s in changedProperties select _propertiesThatExist[s]).ToArray(); var array2 = array; for (int i = 0; i < array2.Length; i++) { PropertyAccessor <TEntityType> propertyAccessor = array2[i]; propertyAccessor.Copy(d.GetEntity(), original); } }