J'utilise le code suivant: mais je reçois cette erreur lors de l'exécution: P> Impossible de lancer le type 'System.int32' pour tapisser 'system.Object'. Linq aux entités prend uniquement en charge les types primitifs de modèle de données d'entité de casting. P>
blockQquote> paysid est Comment puis-je concaténer correctement? P> p>
int code> type et TwodigitCode est
chaîne code> type. p>
8 Réponses :
Utiliser J'espère que votre erreur est une erreur de compilateur (je ne peux penser à aucune façon que le compilateur permettra à cette requête. Je ne sais pas comment il sait que la linq à des entités à des entités). P> P> c.countryid.tostring () code> pour obtenir une représentation de chaîne de votre paysid et concaténate que sur votre champ TwodigitCode:
Non, cela ne peut pas être utilisé. Erreur suivante Dans ce cas: Linq aux entités ne reconnaît pas la méthode «System.string Tostring ToString ()», et cette méthode ne peut pas être traduite dans une expression de magasin.
.Tostring () et .format () ne peuvent pas être exécutés sur le client SQL afin que cela donnera une erreur de temps d'exécution.
Fonctionne bien dans L2S, vous utilisez probablement ef. Aucune raison de descendre cependant, vous auriez dû être plus explicite.
Si vous avez besoin de les concéder ensemble en tant que chaîne, vous pouvez utiliser String.Format Méthode:
Non, il offre une erreur d'exécution: Linq aux entités ne reconnaît pas la méthode 'System.String Format System.String (System.String, System.Object)' Méthode, et cette méthode ne peut pas être traduite dans une expression de magasin.
.Tostring () et .format () ne peuvent pas être exécutés sur le client SQL afin que cela donnera une erreur de temps d'exécution.
Eh bien, la question était "Concaténate int et une chaîne de Linq" non à Linq à SQL, etc. L'OP aurait dû être plus clair. LINQ! = SQL
La question a également été mal tagiée par l'OP. +1 Pour répondre à la question, l'OP a demandé i>, même si ce n'était pas celui qu'il a vraiment voulait. I>
Cette rubrique contient une liste de méthodes CLR pouvant être converties en fonctions canoniques de l'arborescence de la commande et exécutée sur le serveur: p>
MSDN P>
Pour les méthodes CLR non sur cette liste, vous devrez extraire les résultats vers le client à l'aide du client à l'aide de () et exécutez une linq à des objets d'objets. P>
Ceci est une limitation de l'ancienne version du cadre d'entité. Je pense que avec V4, il est résolu. Pour votre version, la solution de contournement consiste à convertir le résultat à un énumérable:
J'essaie votre méthode, mais je reçois une erreur de compilation: un corps de requête doit se terminer par une clause SELECT ou une clause de groupe.
La requête que vous montrez fonctionnera plus ou moins correctement dans les deux EF 1 et 4.
Oui, mais ce que je ne suis pas sûr, c'est que vous avez encore besoin de cette solution de contournement dans la V4 ou que la limitation a été résolue.
En utilisant EF4 et a la même erreur. Trouvé votre réponse et utilisé asen tuteur () pour le résoudre. Vraiment préférer les L2 sur EF4 en ce moment ....
Si cette erreur vous empêche de progresser et est un petit jeu de données, vous pouvez hydrater votre récupération de la base de données en énumérant la requête (appel Tolist). À partir de ce moment-là, vos opérations seront contre des objets en mémoire et vous ne rencontrerez peut-être pas l'erreur que vous recevez.
Je pense que cette réponse est obsolète et globalement une mauvaise pratique. C'est un correctif Quick'n'Dirty qui fonctionne pour l'instant mais vous mordront plus tard (par ex. Lorsque votre ensemble de données actuellement petit augmente soudainement, ou que le client décide qu'il veut exactement la même chose sur un autre jeu de données beaucoup plus grand). Voir la réponse de Flyfisher1952 qui utilise directement des fonctions de DB, ce qui en fait un bien meilleur moyen de résoudre le problème que cette réponse.
Il n'y a pas de mappage vers une fonction canonique pour le < em> int to string casting em>.
Retournez simplement les int em> et la string em> dans 2 colonnes différentes forte> et ensuite concaténate En .NET après avoir utilisé la méthode asenumerable code>: p>
utilise system.data.object.sqlclient.sqlfonctions.stringconvert
Je ne suis pas vraiment sûr. Les types de base de données ont toujours agi un peu étrangement à partir de mon point de vue et des utilitaires SQLFonctions sont ce que j'ai utilisé pour résoudre des problèmes comme celui-ci posté. Je suis favorable à cette approche sur des solutions moins évidentes comme la conversion toliste, car il explicitement b> montre ce que vous faites à quiconque vient à maintenir votre code.
Je crois que cela devrait être la réponse acceptée car elle résout le problème sans introduire des pénalités de performance telles que la réponse de Nicholas Murray (même si elle dit ... et est un petit jeu de données code>).
Dans ef6, ceci a été déplacé vers system.data.entity.sqlserver.sqlfunctions.stringconvert Stackoverflow.com/Questtions/19733085/...
J'ai pu concaténer des chaînes avec le code suivant: Il semble que juste sqlfonctions.stringconvert ((double?) l.zip) code> serait Assez bon, mais la chaîne résultante a un tas de rembourrage à gauche, ce qui entraîne des comparaisons de chaîne ne correspondant pas. S'avère,
couper () code> fonctionne pour raser le supplément. Je crois
sqlfunctions.stringconvert ((double?) L.zip) .trim () code> passe efficacement dans le SQL:
ltrim (rtrim (str (zip))) code>. < / p> p>