In the second method definition of ToCSVString the "delimiter" paramater is never used:
public static string ToCSVString(this System.Linq.IOrderedQueryable data, string delimiter)
return ToCSVString(data, "; ", null);
Might be a copy/paste mistake from the first method definition. It keeps using the default CSV delimiter ";".
Antoher suggestion would be to rename the method to ToCsvString instead of ToCSVString as acronym that contains more than 2 caracters are recommended to be Pascal cased for readability purpose.