Comment utiliser la méthode ToString () pour convertir un entier en chaîne dans LINQ

c# entity entity-framework linq mysql

Question

Lorsque j'essaie d'utiliser ToString () dans l'expression LINQ Lambda ci-dessous, une exception indiquant "LINQ to Entities ne reconnaît pas la méthode" System.String ToString () "et cette méthode ne peut pas être traduite en expression de magasin. "

query = query.Where(q => q.date.ToString().Contains(filtertext)
                          || q.invoicenum.ToString().Contains(filtertext)
                          || q.trans_type.ToString().Contains(filtertext)
                          || q.charge.Contains(filtertext));

J'utilise Linq to entites. Et la base de données utilisée est MySQL et non pas le serveur SQL. Une aide immédiate serait hautement appréciée.

Réponse acceptée

J'ai résolu ce problème en écrivant directement la requête MySQl dans C # comme ci-dessous -

string queryTemplate = 
 @"select inv.* from invoices as inv where userID = '123' and date like '%abc%'";
List<invoice> totalSearch = 
 context.ExecuteStoreQuery<invoice>(queryTemplate).ToList();

Réponse populaire

Harshal, le problème est le SqlFunctions.StringConvert est pour MS SQL, pas pour MySQL. Vous pouvez essayer de convertir les résultats en Enumerable, puis effectuer une requête dessus. Exemple:

using (DatabaseEntities db = new DatabaseEntities())
        {
            var list = from l in db.Customers.AsEnumerable()
                       orderby l.CompanyName
                       select new SelectListItem { Value = l.CustomerID.ToString(), Text = l.CompanyName };

            return list.ToList();
        }

Notez la ligne:

l dans db.Customers.AsEnumerable ()

est en train de convertir les résultats en Enumerable, vous pouvez alors utiliser .toString () dessus. Vous pouvez l'adapter à vos besoins.



Related

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