convertir en int en string dans linq pour la recherche
Je voudrais que mes utilisateurs d'être en mesure de rechercher pour les ordres d'achat (qui sont INT) via partielle des chaînes, c'est à dire si un ordre d'achat est 123456 tapant dans 456 me donne 123456 dans les résultats.
J'ai pensé que ce serait le travail:
var pop = (from po in ctx.PurchaseOrders
let poid = po.PurchaseOrderID.ToString()
where poid.Contains(term)
select new SearchItem
{
id = poid,
label = po.SupplierID,
category = "purchaseorder"
}).ToList();
Mais j'obtiens une erreur
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
Comment puis-je convertir l'INT PurchaseOrderID à une chaîne pour me permettre de rechercher des fragments de celui-ci?
Grâce
- Essayez un direct en fonte, c'est à dire
let poid = (string)po.PurchaseOrderID
. Linq to entities mettra à l'honneur certains de l'appel de méthodeToString
n'est pas l'un d'eux. Directe casting est logicaly equival à unCAST(X as Type)
en SQL. - J'ai répondu à la même question ici. Check it out. stackoverflow.com/questions/21233023/...
- La solution à votre problème ici: stackoverflow.com/questions/1066760/...
Vous devez vous connecter pour publier un commentaire.
Utiliser ceci:
Pour plus d': http://msdn.microsoft.com/en-us/library/dd487127.aspx
Référence pour l'avenir, ont fixé ce, en utilisant:
C'est l'intermédiaire de la liste qui le fait fonctionner.
Vous obtenez cette erreur parce que votre LINQ to SQL ne reconnaît pas le
ToString()
méthode.Si vous voulez convertir un
int
à unstring
et vous êtes à l'aide de SQL Server avec EF, utilisez la fonction SqlFunctions.StringConvert de cette façon:ou cela, comme alternative:
Le problème est que nous ne savons pas quel est le fournisseur que vous utilisez avec EF. Dans le cas de SQL Server, cela fonctionnera, mais si le fournisseur est différent, comme MySQL, en utilisant cette expression, l'application va lancer une exception avec ce message:
Être prudent!
Dans le cas où vous n'êtes pas à l'aide de SQL Server en tant que fournisseur, utiliser un cast explicite dans votre requête, comme suggéré par @SimonBelanger:
Je suis tombé sur cette question et je voulais poster une solution qui fonctionne avec Entity Framework et LINQ to entities via l'expression Lambda.
qui a été emprunté à la solution ici --> https://stackoverflow.com/a/21234785/2395030
Linq ne sais pas quelle Méthode ToString() est, toutefois, vous pouvez définir votre méthode personnalisée. Si vous utilisez ce lien, vous obtenir votre problème résolu.
essayer cette