Convert .NET DateTime to a string using ordinals
You can simplify it a bit and make a trivial improvement to performance (this will be noticeable if you call this method a lot).

public static string ToStringWithOrdinal(this DateTime d) {
  switch (d.Day) {
    case 1: case 21: case 31:
      return d.ToString("dd'st' MMMM yyyy");
    case 2: case 22:
      return d.ToString("dd'nd' MMMM yyyy");
    case 3: case 23:
      return d.ToString("dd'rd' MMMM yyyy");
    default:
      return d.ToString("dd'th' MMMM yyyy");
  }
}


As a side note this format doesn't read well to me. Normally I would write it as follows:


  October 11th 2011


Is this format common in the UK?