IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Convertir un integer en string dans une requete linq-to-sql en VB.NET


Sujet :

VB.NET

  1. #1
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut Convertir un integer en string dans une requete linq-to-sql en VB.NET
    Bonjour,

    Je travaille sur une fonction de recherche dynamique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <Extension()>
        Public Function Where(Of T)(source As IQueryable(Of T), searchColumn As String,MySearch as String) As IQueryable(Of T)
            Dim condPart As Expression = Nothing
            Dim ParamExpr = Expression.Parameter(GetType(T), "x")
     
                 Dim body = Expression.PropertyOrField(body, searchColumn )
               If body.Type.FullName.Contains("Boolean") Then
                    condPart = Expression.Equal(Expression.Convert(body, GetType(Boolean?)), Expression.Convert(Expression.Constant(CBool(MySearch)), GetType(Boolean?)))
     
                ElseIf body.Type.FullName.Contains("Int32") OrElse body.Type.FullName.Contains("Int64") Then
                    Dim DblToString = GetType(SqlFunctions).GetMethod("StringConvert", New Type() {GetType(Double?)})
                    Dim toDouble As Expression = Expression.Call(DblToString, Expression.Convert(body, GetType(Double?)))
                    condPart = Expression.Call(toDouble, "Contains", Nothing, Expression.Constant(MySearch))
                Else
                   '...
                End If
     
            Return source.Provider.CreateQuery(Of T)(Expression.Call(GetType(Queryable), "Where", New Type() {GetType(T)}, source.Expression, Expression.Lambda(condPart , ParamExpr)))
        End Function
    Avant une mise à jour de mon VS2017 ça marchait. J'ai corrigé pour pas mal de type. Par exemple, j'ai laissé le type boolean corrigé. Mais je n'arrive pas à corriger pour le type Int32/Int64
    Quand je tape 2, je souhaite voir apparaître tous les enregistrements contenant 2 (2;32:102...). C'est pourquoi je transforme mon Champs Body en string.
    Mais ça me répond que cette fonction ne peut être utilisée que pour linq to entities. Comme source provient d'une requête linq to SQL...

    Merci de votre aide
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  2. #2
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Je déprime... après avoir remarqué sur mon SQL Server Profiler que ma requête renvoyée avant de passer dans ma fonction une requête sur l'ensemble de ma table sans Skip... Je viens de remarquer qu'il y avait un .ToList qui trainait dans ma requête de source...
    Je l'ai enlevé et ça marche.
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insersion de String dans une base de données sql
    Par Balbuzard dans le forum JDBC
    Réponses: 2
    Dernier message: 17/12/2009, 11h28
  2. Colle sur un tri dans une requête linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2009, 10h01
  3. variable de type string dans une requete sql
    Par hammag dans le forum JDBC
    Réponses: 9
    Dernier message: 15/06/2008, 01h32
  4. Condition dans une requete (pas en SQL)
    Par Luc01 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 08/12/2006, 22h57
  5. Integer ou string dans une DBGRID
    Par Yepazix dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo