title: How do I update the Order property on a DisplayAttribute programmatically?
body: <p>Given the following code:</p>
  
  <pre><code>using System.ComponentModel.DataAnnotations;
  using System.Linq;
  using Xunit;
  
  namespace Company.Tests
  {
      public class MyObject
      {
          [Display(Order = 1000)]
          public virtual string StringPropertyB { get; set; }
  
          [Display(Order = 2000)]
          public virtual string StringPropertyA { get; set; }
      }
  
      public class MyObjectTest
      {
          [Fact]
          public void X()
          {
              var properties = typeof(MyObject).GetProperties();
              var stringPropertyBPropertyInfo = properties[0];
              var stringPropertyAPropertyInfo = properties[1];
  
              // Debugger Display = "{[System.ComponentModel.DataAnnotations.DisplayAttribute(Order = 1000)]}"
              var bDisplayAttribute = stringPropertyBPropertyInfo.GetCustomAttributesData().FirstOrDefault();
  
              // Debugger Display = "{[System.ComponentModel.DataAnnotations.DisplayAttribute(Order = 2000)]}"
              var aDisplayAttribute = stringPropertyAPropertyInfo.GetCustomAttributesData().FirstOrDefault();
          }
      }
  }
  </code></pre>
  
  <p>How do I update the Order property programmatically?</p>
  
  <p>I want to update it after it's been set to a new value. (Use case being not having to specify the Order but instead assign the Order a value automatically to match the order that the properties on MyObject appear from top to bottom.)</p>