2014-04-27 2 views
1

J'ai boîte de recherche dont je veux retourner les résultats basés sur TicketID. Cependant, en essayant de convertir le TicketID en chaîne pour le comparer à la chaîne terme de recherche, je reçois cette erreur ...LINQ to Entities ne reconnaît pas la méthode 'System.String ToString (Int32)' méthode

Voici ma méthode:

public ActionResult Autocomplete(Ticket ticket, string term) 
{ 
    var searchTickets = db.Tickets 
     .Where(t => t.StatusID != 3 && 
      Convert.ToString(t.TicketID).StartsWith(term)) 
     .Take(10) 
     .Select(t => new 
     { 
      label = t.Summary 
     }); 

    return Json(searchTickets, JsonRequestBehavior.AllowGet); 
} 

J'ai essayé d'autres suggestions sur des postes similaires comme la méthode d'extension SqlFunctions.StringConvert(), cependant, cela génère une erreur de syntaxe avant même que le projet ne soit construit ...

Toutes les instructions seront appréciées.

+1

Vous devriez utiliser 'SqlFunctions' en effet, qu'avez-vous essayé? – haim770

+0

La duplication possible de [LINQ to Entities ne reconnaît pas la méthode 'System.String ToString()' méthode, et cette méthode ne peut pas être traduite dans une expression de magasin] (http://stackoverflow.com/questions/5899683/linq-to -entities-does-not-recognition-the-method-system-string-tostring-method) –

Répondre

2

essayer comme ceci:

Using System.Data.Objects.SqlClient; 


var searchTickets = db.Tickets 
     .Where(t => t.StatusID != 3 && 
      SqlFunctions.StringConvert((double)t.TicketID).StartsWith(term) 
     .Take(10) 
     .Select(t => new 
     { 
      label = t.Summary 
     }); 

Avec EF 4 vous pouvez utiliser SqlFunctions.StringConvert. Il n'y a pas de surcharge pour int, vous devez donc lancer un double ou un decimal.

+0

J'ai réalisé pourquoi cette méthode ne fonctionnait pas pour moi cette première fois que je l'ai essayée! Il me manquait l'instruction Using En utilisant System.Data.Objects.SqlClient; Merci pour votre aide! – Tomuke

+0

donc cela a fonctionné pour vous droite .. :) –

+0

oui, fonctionne bien maintenant, je juste besoin d'inclure la bonne instruction en utilisant: D – Tomuke

Questions connexes