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

Linq Discussion :

Pb Linq to Entities : OrderBy [Débutant]


Sujet :

Linq

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut Pb Linq to Entities : OrderBy
    Bonjour,
    J’aurais besoin de vos lumières pour créer une requête Linq to Entities, et surtout pour la trier car je bloque depuis un moment dessus
    Je suis sous EF5 sur une base SQL Server

    Le critère de tri est la propriété « Numero » qui comme son nom de l’indique pas est un string pouvant contenir des lettres (exemple : 205S)
    J’ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy(Function(p) p.Numero)
    Qui marche, mais me liste 510 avant 52

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy.(Function(p) CInt(p.Numero))
    Qui bloque quand des lettres sont présentes

    J’ai essayé de créer une sub extrayant les chiffres de « Numero » :Mais Linq to Entities ne la reconnait pas
    J’ai essayé d’ajouter une propriété ReadOnly à MaClasse extrayant les chiffres, mais là aussi Linq to Entities ne la reconnait pas

    Je donne ma langue au chat ..
    Par avance, merci de votre aide
    Bertrand

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par 105rn2 Voir le message
    Le critère de tri est la propriété « Numero » qui comme son nom de l’indique pas est un string pouvant contenir des lettres (exemple : 205S)
    J’ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy(Function(p) p.Numero)
    Qui marche, mais me liste 510 avant 52
    Normal puisqu’il s’agit d’un champ texte. Le chiffre 51 et évalué comme inférieur à 52, l’ensemble 510 vient donc avant 52.
    Une solution : faire précede tes nombres de longueur 2 de 0 afin d’avoir la même taille: 510 et 052. Ainsi, 052 viendrait avant 510.
    Inspire toi de ceci.

    Citation Envoyé par 105rn2 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy.(Function(p) CInt(p.Numero))
    Qui bloque quand des lettres sont présentes
    Regarde ce post et celui ci aussi.
    N'oubliez pas le tag et

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    +1 avec Callo. C'est normal que ton 51 soit après 501.

    Tu vois un problème où il n'y en a pas à mon avis. Tri plutôt par date ou Id.

    Si ce numéro peut être saisie par l'utilisateur et contenir des lettres tu ne peux pas être certain que tes numéros seront de la forme "500", "501" etc.

    Sinon tu peux te débrouiller avec une requête intermédiaire : tu remplis une liste de model / objet anonyme en découpant ton numéro.


    Mais si le caractère S en fin de numéro est toujours à la fin et représente un statut par exemple, c'est que la DB est mal conçu et nécessite un champ supplémentaire pour stocker cette lettre.

    As-tu regardé si c'était possible de faire ta requête avec un Let qui stockerait le numéro ?
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re bonjour et merci pour vos réponses,
    Le "Numero" peut contenir ou pas des lettres, il s'agit de références de documentation : 501, 212SP,...
    Selon
    http://stackoverflow.com/questions/2...rectly-c-sharp
    il est indiqué
    Int32.Parse is not supported by the LinqToSql translator. Convert.ToInt32 is supported.
    J'ai donc essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy(Function(p) Convert.ToInt32(p.Numero))
    Mais Linq ne reconnait pas ToInt32 !

    Je ne suis que débutant, j'ai donc essayé avec Let
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = From Daf In ctx.DocAffrs Let Num = Outil_Chaine.Extraitchiffre(Daf.Numero) Select Daf
    Je voulais donc mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy(Function(p) p.Num)
    Mais à la saisie Num n'apparait pas

    Il y a beaucoup à lire dans les liens donnés (et en C#), quelle solution devrais je creuser ?
    Merci encore
    Bertrand

  5. #5
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    pour faire les choses proprement (et réutilisable), vous devriez implémenter votre propre IComparer
    Exemple ici (réponse au lien de callo)

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Une solution plus simple serait de convertir le IQueryable to IEnumerable. Ainsi tu pourras exécuter la suite des instructions en mémoire (en supposant que to .ToList() ou .AsEnumerable() ne retourne pas un très grand nombre de recordset) et appliquer int.Parse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var query = from Daf in ctx.DocAffrs.ToList()
                    where Daf.Numero == int.Parse(c.KeyAsString)
                    order by int.Parse(Daf.Numero)
    select c
    Autre solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var query = from Daf in ctx.DocAffrs 
                              where == ..... 
                              orderby Daf.Numero.Length, Daf.Numero 
                              select Daf ;
    Celle pour laquelle je pencherai moi, comme mentionnée par dkmix:
    1. Créer un classe, un custom comparer:
    Code c# : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class SemiNumericComparer : IComparer<string>
        {
            public int Compare(string s1, string s2)
            {
                if (IsNumeric(s1) && IsNumeric(s2))
                {
                    if (Convert.ToInt32(s1) > Convert.ToInt32(s2)) return 1;
                    if (Convert.ToInt32(s1) < Convert.ToInt32(s2)) return -1;
                    if (Convert.ToInt32(s1) == Convert.ToInt32(s2)) return 0;
                }
     
                if (IsNumeric(s1) && !IsNumeric(s2))
                    return -1;
     
                if (!IsNumeric(s1) && IsNumeric(s2))
                    return 1;
     
                return String.Compare(s1, s2, StringComparison.OrdinalIgnoreCase);
            }
     
            public static bool IsNumeric(object value)
            {
                try
                {
                    var i = Convert.ToInt32(value.ToString());
                    return true;
                }
                catch (FormatException)
                {
                    return false;
                }
            }
        }
    Puis tu peux l'utiliser comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var query = from Daf in ctx.DocAffrs.ToList()
                    where == .....
    var resultat = query.ToList();
     
    var listOrdonnee = resultat.AsEnumerable(); // Je ne sais pas si c'est safe de faire encore .AsEnumerable(). Si quelqu'un peut mieux nous éclairer, ce serait cool.
    foreach (var item in resultat.OrderBy(x => x, new SemiNumericComparer()))
     {
        MessageBox.Show(item); // tu verras que les éléments s'afficheront dans le bon ordre.
      }
    N'oubliez pas le tag et

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re bonjour,
    Je ne suis vraiment qu'un pauvre débutant (ou autrement dit un boulet !)
    J'ai traduit l'exemple en vb

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Public Class SemiNumericComparer
        Implements IComparer(Of String)
     
     
       Public Shared Function IsNumeric(value As Object) As Boolean
            Try
                Dim i As Integer = Convert.ToInt32(value.ToString())
                Return True
            Catch generatedExceptionName As FormatException
                Return False
            End Try
        End Function
     
        Public Function Compare(s1 As String, s2 As String) As Integer Implements IComparer(Of String).Compare
            If IsNumeric(s1) AndAlso IsNumeric(s2) Then
                If Convert.ToInt32(s1) > Convert.ToInt32(s2) Then
                    Return 1
                End If
                If Convert.ToInt32(s1) < Convert.ToInt32(s2) Then
                    Return -1
                End If
                If Convert.ToInt32(s1) = Convert.ToInt32(s2) Then
                    Return 0
                End If
            End If
     
            If IsNumeric(s1) AndAlso Not IsNumeric(s2) Then
                Return -1
            End If
     
            If Not IsNumeric(s1) AndAlso IsNumeric(s2) Then
                Return 1
            End If
     
            Return String.Compare(s1, s2, True)
        End Function
    End Class
    Le tri n'est pas celui que je désire ( je voudrais 510S entre 509 et 511) mais ça je saurai le faire
    Par contre je ne sais pas comment l’utiliser dans ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query = Query.OrderBy(Function(p) New SemiNumericComparer()) ???
    Comment spécifier que c'est le Numero qui doit être trié ?
    Bertrand

  8. #8
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Pourrais-tu poster l'intégralité de ta requête linq ?
    N'oubliez pas le tag et

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Le "Numero" peut contenir ou pas des lettres, il s'agit de références de documentation : 501, 212SP,...
    Je réitère : cela ne te sert strictement à rien de trier là dessus. Nous avons eu exactement le MEME problème chez nous, on a tout d'abord fait avec de l'IEnumerable comme Callo t'a dit.

    Puis nous sommes revenu en arrière quand on s'est rendu compte que chez certains clients, le numéro ne contient quasiment jamais de nombre du coup le tri rendait la lecture plus ardu et n'avait AUCUN sens ! D'où ma suggestion de trier par date de création du document ou par identifiant.

    Après si tu as un seul client qui remplit une seul base, fais comme tu sens, mais je te parie que sur le long terme tu reviendras sur ton tri pour en mettre un par id ou date ^^
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re
    Désolé Callo, mon psot et votre réponse précédente se sont croisés !
    Ci dessous ma requête qui est un peu longue : le Form est un Form de recherche multi-critères et de plus peut être appelé depuis un autre Form pour ajouter d'autres critères :

    déclaration des requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         Dim QueryDocAffrListeLS As System.Linq.IQueryable(Of Phila_Model.DocAffr)
        Dim QueryDocAffrListeLSbase As System.Linq.IQueryable(Of Phila_Model.DocAffr) = From Daf In ctx.DocAffrs Select Daf 'order inutile car trié lors du chargement
        Public QueryDocAffrListeLSRemote As System.Linq.IQueryable(Of Phila_Model.DocAffr)
    Choix de la requête "interne" ou depuis autre Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            If ModeOuvertureForm = TypeOuvertureForm.Filtre Then
                QueryDocAffrListeLS = QueryDocAffrListeLSRemote
            Else
                QueryDocAffrListeLS = QueryDocAffrListeLSbase
            End If
     
            If ListeDocAffr IsNot Nothing Then ListeDocAffr.Clear()
    un des critères (il y en a une vingtaine)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            If Cbo2.Visible Then
                Dim IDRecherche2 As Double
                IDRecherche2 = Int(Cbo2.SelectedValue)
                QueryDocAffrListeLS = QueryDocAffrListeLS.Where(Function(p) p.DocAffrTypeID = IDRecherche2)
            End If
    choix du tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            If ChkBoolean1.Visible And ChkBoolean1.Checked Then QueryDocAffrListeLS = QueryDocAffrListeLS.OrderBy(Function(p) p.Numero)
            If ChkBoolean2.Visible And ChkBoolean2.Checked Then QueryDocAffrListeLS = QueryDocAffrListeLS.OrderByDescending(Function(p) p.Numero)
            If ChkBoolean3.Visible And ChkBoolean3.Checked Then QueryDocAffrListeLS = QueryDocAffrListeLS.OrderBy(Function(p) p.DocAffrID)
            If ChkBoolean4.Visible And ChkBoolean4.Checked Then QueryDocAffrListeLS = QueryDocAffrListeLS.OrderByDescending(Function(p) p.DocAffrID)
    comptage et limitation du chargement (sinon il pourrait y avoir des milliers de lignes chargées)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            ' Comptages
            Try
                NbreElementDansBDD = ctx.DocAffrs.Count
                NbreElementRepondantCritere = QueryDocAffrListeLS.Count
            Catch ex As Exception
                Call MessageBoxSuiviErreurEx(ex, "Erreur Comptage : ", "Erreur Comptage")
            End Try
     
            ' pour limiter la liste chargeable
            QueryDocAffrListeLS = QueryDocAffrListeLS.Skip(PageIndex * NbreMaxSelectionnable).Take(NbreMaxSelectionnable)
    mise en liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Try
                ListeDocAffr = QueryDocAffrListeLS.AsNoTracking.ToList
            Catch ex As Exception
                Call MessageBoxSuiviErreurEx(ex, "QueryDocAffrListeLS.AsNoTracking.ToList : ", "Erreur ")
            End Try
    Puis rechargement du DGV,....

    Merci encore
    Bertrand

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    En réponse à Kikuts
    Le "Numero" contient toujours du numérique, mais est parfois complété par une ou des lettres (révisions de doc)
    j'ai prévu un tri par ID, mais je n'ai que "Numero" pour lister les doc (dates de création, date de modif non pertinentes car "Numero" n'est pas séquentiel)
    Merci encore
    Bertrand

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Dans ce cas si les lettres sont un compléments d'information, pourquoi les stocker dans le même champ ?

    A l'enregistrement : NumeroPartieEntiere = substring de numero / regex pour récupérer les nombres et NumeroPartieLettre prend le reste.

    Pour l'affichage, tu mets une readonly qui te fait une concaténation des deux. Tu t'offres ainsi la possibilité de faire des requêtes ultra simple pour savoir par exemples, lesquels ont eu des révisions etc. Et en même temps, ça améliore tes performances de tri car moins d'opérations à faire.
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    A Kikuts,
    c'est surement la solution de la sagesse ..
    je vais voir si je peux modifier la BDD
    Merci
    Bertrand

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re
    J'ai fait comme indiqué par Kikuts !
    Et ça résout mon pb, je garde cependant les autres liens car j'en aurai surement encore besoin !
    merci à tous !
    Bertrand

  15. #15
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par 105rn2 Voir le message
    A Kikuts,
    c'est surement la solution de la sagesse ..
    Bertrand
    C'est bien d'avoir opter pour la voie de la sagesse . Pourquoi faire compliqué quand on peut faire simple? Bon courage!
    N'oubliez pas le tag et

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    J'avoue toujours essayer de favoriser la simplicité :-)
    A défaut parfois de la sagesse, ou de la rigueur !
    Merci encore
    Bertrand

  17. #17
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    You're welcome

    Parfois on veut optimiser le nombre de champs ou bien on ne souhaite pas modifier la structure de la DB. Mais c'est souvent ce qu'il y a de mieux à faire. Je reconnais cependant que l'enjeux technique est moindre et pas forcément passionnant comparer au challenge que représente ton traitement.

    S'il on pousse la reflexion, modifier la structure d'une DB, c'est possible peut importe le langage, la techno etc. Du coup, la rigueur est cross plateforme si je peux me permettre ta requête Linq, non
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  18. #18
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kikuts Voir le message
    Du coup, la rigueur est cross plateforme si je peux me permettre ta requête Linq, non
    Personnellement je n'appellerai pas ça de la rigueur, mais juste de la modélisation Une base bien modélisée évite bien des soucis, et cette discussion en est la preuve.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  19. #19
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Points : 963
    Points
    963
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Personnellement je n'appellerai pas ça de la rigueur, mais juste de la modélisation Une base bien modélisée évite bien des soucis, et cette discussion en est la preuve.
    gna gna gna gna gna :p bon je te l'accorde ce coup ci mais t'étonnes pas après si on t'aide pas pour les réseaux sociaux sur WP
    "S'adapter, c'est vaincre" - Cellendhyll de Cortavar

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Le pb avec les solutions simples .. c'est que ce n'est pas forcément celles auxquelles ont pense en premier (en tout cas moi !)
    Merci encore
    Bertrand

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

Discussions similaires

  1. LINQ To Entity
    Par lutecefalco dans le forum Général Dotnet
    Réponses: 15
    Dernier message: 24/06/2008, 16h06
  2. Linq to Entities disponible dans C# Express ?
    Par rdh123 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/06/2008, 12h43
  3. Linq to entities très bridé sur de gros projets !
    Par gillou.95 dans le forum Accès aux données
    Réponses: 7
    Dernier message: 15/05/2008, 16h02
  4. [Migration] linq to sql => linq to entities
    Par anthyme dans le forum Accès aux données
    Réponses: 1
    Dernier message: 25/04/2008, 18h48
  5. Orcas - Linq to Entities
    Par elnfrancois dans le forum Accès aux données
    Réponses: 2
    Dernier message: 31/08/2007, 10h21

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