Concaténer int et string dans LINQ aux entités

entity-framework linq linq-to-entities

Question

J'utilise le code suivant:

from c in Country
 where c.IsActive.Equals(true)
 orderby c.CountryName
 select new
 {
     countryIDCode = c.CountryID + "|" + c.TwoDigitCode,
     countryName = c.CountryName
 }

Mais je reçois cette erreur en l'exécutant:

Impossible de convertir le type 'System.Int32' en 'System.Object'. LINQ to Entities ne prend en charge que la conversion des types primitifs Entity Data Model.

CountryID est de type int et TwoDigitCode est de type string .

Comment concaténer correctement?

Réponse acceptée

Si cette erreur vous empêche de progresser et qu'il s'agit d'un petit jeu de données, vous pouvez hydrater votre extraction de la base de données en énumérant la requête (appelez ToList). À partir de ce moment, vos opérations s’appuieront sur des objets en mémoire et vous risquez de ne pas rencontrer l’erreur que vous recevez.

var countries = (from c in Country
where c.IsActive.Equals(true)
orderby c.CountryName
select c).ToList();


var countryCodes = (from c in countries
where c.IsActive.Equals(true)
    orderby c.CountryName
    select new
    {
        countryIDCode = c.CountryID + "|" + c.TwoDigitCode,
        countryName = c.CountryName
    });

Réponse populaire

Utilisez System.Data.Objects.SqlClient.SqlFunctions.StringConvert

 from c in Country
 where c.IsActive.Equals(true)
 orderby c.CountryName
 select new
 {
     countryIDCode = SqlFunctions.StringConvert((double)c.CountryID) 
                     + "|" + c.TwoDigitCode,
     countryName = c.CountryName
 }


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow