LINQ para entidades StringConvert (double) 'não pode ser convertido para converter int em string

Problem

Precisa converter int para string usando EF4 + SQL CE4. A opção recomendada de usar SqlFunctions.StringConvert (double) ainda gera erros.

Opção (original). Isso me dá um erro:

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();
        }
    }

Opção (mais sugerido). Então, como muitas postagens sugerem, usei a função SqlFunctions.StringConvert () da 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 agora mostra o erro abaixo:

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.

Option 3 (para casos muito específicos). Então, o post do anoter mostra uma solução inteligente usando o Dictionary, que finalmente funcion

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();
        }
    }

Mas funciona apenas para valores simples de pares (chave, valor). Alguém pode me ajudar com outra solução ou o que estou fazendo de errado com a opção 2?

E espero que a Microsoft em breve conserte a EF antes de nos pressionar a deixar o L2S, que já é estável e muito mais maduro. Na verdade, estou usando o EF4 só porque quero usar o SQL CE, caso contrário, fico com o L2

questionAnswers(2)

yourAnswerToTheQuestion