private static void ReorderElements(XContainer entity, Func <IEnumerable <XElement>, IEnumerable <XElement> > sorter, string elementName) { var props = entity.FindByLocalName(elementName).ToList(); // clear props.Remove(); // re-add in new order, will be added to end foreach (var prop in sorter(props).ToList()) { entity.Add(prop); } }