LINQ to Entities StringConvert (double) 'no se puede traducir para convertir int a string

Problem

Necesita convertir int a cadena usando EF4 + SQL CE4. La opción recomendada de usar SqlFunctions.StringConvert (double) todavía me da errores.

Opción (original). Esto me da un error:

public static IEnumerable<SelectListItem> xxGetCustomerList()
    {
        using (DatabaseEntities db = new DatabaseEntities())
        {
            var list = from l in db.Customers
                       orderby l.CompanyName
                       select new SelectListItem { Value = l.CustomerID.ToString(), Text = l.CompanyName };
            return list.ToList();
        }
    }

Opcion (más sugerido). Luego, como muchas publicaciones sugieren, utilicé la función SqlFunctions.StringConvert () de la biblioteca System.Data.Objects.SqlClient:

public static IEnumerable<SelectListItem> GetCustomerList()
    {
        using (DatabaseEntities db = new DatabaseEntities())
        {
            var list = from l in db.Customers
                       orderby l.CompanyName
                       select new SelectListItem { Value = SqlFunctions.StringConvert((double)l.CustomerID), Text = l.CompanyName };
            return list.ToList();
        }
    }

Que ahora muestra el siguiente error:

The specified method 'System.String StringConvert(System.Nullable`1[System.Double])' on the type 'System.Data.Objects.SqlClient.SqlFunctions' cannot be translated into a LINQ to Entities store expression.

Opción 3 (para casos muy específicos). Luego, otra publicación muestra una solución inteligente usando Dictionary, que finalmente funciona:

public static IEnumerable<SelectListItem> xGetCustomerList()
    {
        using (DatabaseEntities db = new DatabaseEntities())
        {
            var customers = db.Customers.ToDictionary(k => k.CustomerID, k => k.CompanyName);
            var list = from l in customers
                       orderby l.Value
                       select new SelectListItem { Value = l.Key.ToString(), Text = l.Value };
            return list.ToList();
        }
    }

Pero solo funciona para valores de pares simples (clave, valor). ¿Alguien puede ayudarme con otra solución o qué estoy haciendo mal con la opción 2?

Y espero que Microsoft pronto haga EF justo antes de empujarnos a pasar de L2S, que ya es estable y mucho más maduro. De hecho, estoy usando EF4 solo porque quiero usar SQL CE, de lo contrario me quedo con L2S.

Respuestas a la pregunta(2)

Su respuesta a la pregunta