Linq & String.ToLower () comportamiento extraño


Tengo una consulta en el lado del servidor que devuelve una lista de ciudades distintas de una tabla de código postal.
Estoy usando el servicio WCF RIA.
La siguiente consulta devuelve con éxito 228 ciudades cuandoprovincename == ""

    public IQueryable<CityPM> GetCities(string provinceName)
    {
        return this.ObjectContext.ZipCodes.Where(z => z.Province.Contains(provinceName))
                                          .GroupBy(z => z.City)
                                          .Select(g => g.FirstOrDefault())
                                          .Select(zc => new CityPM() { ID = zc.ID, Name = zc.City });
    }

pero si uso el método ToLower () como se muestra a continuación, la consulta devuelve 0 ciudades cuandoprovincename == "".

    public IQueryable<CityPM> GetCities(string provinceName)
    {
        return this.ObjectContext.ZipCodes.Where(z => z.Province.ToLower().Contains(provinceName.ToLower()))
                                          .GroupBy(z => z.City)
                                          .Select(g => g.FirstOrDefault())
                                          .Select(zc => new CityPM() { ID = zc.ID, Name = zc.City });
    }

¿Por qué la consulta no devuelve nada?

Respuestas a la pregunta(3)

Su respuesta a la pregunta