Accueil > Forum > > > > LINQ TO - type retour données
LINQ TO - type retour données
mardi 4 août 2009 à 13:34:53 |
LINQ TO - type retour données

Kikuts
|
Bonjour à vous amis développeurs !
Je suis en train de créer un service web. Dans ce service, j'y code des requêtes LINQ.
Avant de poser ma question, je vais planter le décor :
Soit ma table Personne avec les champs id, nom, prenom, age, sexe, ville, tel.
Si j'ai une requête qui prend toutes les personnes je fais un truc comme ça :
Code C# :
List<PERSONNE> WCF_IServices.GetPersonnes()
{
DBDataContext dbc = new DBDataContext();
var sql = from p in dbc.PERSONNE select p;
return sql.ToList();
}
Si je souhaite avoir la liste des personnes, nom et prénom uniquement, je vais faire :
List< ******* > WCF_IServices.GetPersonnes()
{
DBDataContext dbc = new DBDataContext();
var sql = from p in dbc.PERSONNE
select new { p.NOM , p.PRENOM , p.TEL };
return sql.ToList();
}
Mais dans ce cas de figure, quel est le type des données récupéré ? Ce ne sont pas des personnes. Je sais qu si j'avais fait un select sur juste le nom, un List<string> aurait fait l'affaire.
Merci d'avance ; )
Bonne journée.
|
|
mardi 4 août 2009 à 17:38:33 |
Re : LINQ TO - type retour données

Kikuts
|
Pour contourner le problème, pour l'instant je créer une classe pour chaque sélection dans une table ... C'est loin d'être propre ! Donc si qq1 a une solution à ma question :) ca serait très généreux de sa part !
Une nouvelle question sur linq :
admettons la requete :
var rez =
from t in table
select new {t.col1, col2, col3, cols 4 ...)
Quand j'affiche le résultat dans une grille avec Silverlight, les données sortent dans un sens différent : colone 1 devient col2 au lieu de col1, puis col4 vient à la place de col2, col 1 vient en col3 et col 4 reste en col4.
Où et comment puis je modifier l'ordre d'apparition des entêtes ? merci
Mais à l'affichage (auto generate collumns
|
|
mardi 4 août 2009 à 19:38:39 |
Re : LINQ TO - type retour données

nhervagault
|
Réponse acceptée !
Salut,
Les types retournés par les requetes Linq sont des types anonymes.
Il faut donc utilisé un type de données qui est propre a ton interrogation
et qui soit le plus generique possible de facon a avoir un wsdl generique pour les différentes interrogations par un web service.
N'hesite pas a utiliser des complexes types dans le type de tes données WSDL.
Exemple
PersonneResponse
--CodeResponse (pour indiqué qu'il y a une erreur
--NombreDePerssonnes
--ListePersonne
----Personne(nom, prenom, id, .....)
Bon courage.
|
|
mercredi 5 août 2009 à 08:49:59 |
Re : LINQ TO - type retour données

Bidou
|
Bonjour,
Ceci ne ferait-il pas l'affaire ?
Code C# : DBDataContext dbc = new DBDataContext();
var sql = from p in dbc.PERSONNE
select new Person { NOM = p.NOM , PRENOM = p.PRENOM , TEL = p.TEL };
return sql.ToList();
- Blog-
- Site Perso-
|
|
mercredi 5 août 2009 à 09:34:14 |
Re : LINQ TO - type retour données

Kikuts
|
Salut Bidou ! Merci tu me rassures :) c'est la solution que j'ai trouvé en attendant de trouver mieux ^^
Mais le problème c'est qu'a chaque fois que je sélectionne des champs supplémentaire dans mon select, je dois créer une classe.
En l'occurrence, la table Person. Mais si dans une autre liste ressemblante, j'ai la liste des personne et leurs travaux effectué (peu importe le sujet disons juste que l'on a des champs de retour différents : on n'a pas un List<Person> en retour)
Par exemple :
Public class Person
{
public string NOM {get;set;}
public string PRENOM {get;set;}
public string TEL {get;set;}
}
var sql = from p in dbc.PERSONNE
Mais si je décide d'afficher son travail (le libellé de son poste par exemple)
var sql = from p in dbc.PERSONNE
join po in poste .........
select new Person { NOM = p.NOM , PRENOM = p.PRENOM , TEL = p.TEL, POSTE =po.LIBELLE };
Devrais je recréer une autre classe exprès ?
------------------
Avez vous une idée pour l'ordre d'affichage des colonnes dans un datagrid ?
------------------
Merci de vos réponses rapides et précises. C'est toujours sympa :) Bonne journée à vous 2 ! (Et à ceux qui se joindront à ce post :p)
|
|
mercredi 5 août 2009 à 13:45:53 |
Re : LINQ TO - type retour données

Bidou
|
Réponse acceptée !
La classe Personne devrait être crée en fonction de ce qu'il y a dans la database.
Exemple:
DB: Nom, Prenom, Adresse => class personne avec les 3 properties
Ensuite, tu requetes dessus
var x = from p in tralala.Personne
select new Person{Nom=p.Nom}
Les autres champs pas utilisé (Prenom, Adresse) auront alors la valeur par défaut (probablement, null)
- Blog-
- Site Perso-
|
|
mercredi 5 août 2009 à 14:21:44 |
Re : LINQ TO - type retour données

Kikuts
|
Ok merci j'ai compris !
Enfin je crois ^^
Donc si dans ma DB j'ai Nom, Prenom, Adresse,
Que j'ai la classe Personne
Pour avoir un champs supplémentaires Libellé travail par ex, je devrai faire
class salarie
{
private Personne p;
private string libelle;
}
C'est bien ça ? Merci ! :)
|
|
mercredi 5 août 2009 à 17:25:07 |
Re : LINQ TO - type retour données

Bidou
|
Non.
En principe, le contenu de la base de donnée ne devrait pas changer.
Si on part du principe que tu as dans la base de donnée Personne(Nom, Prenom, Adresse), alors tu fais une classe correspondante qui possède tes champs. Tu en auras jamais à rajouter...
Maintenant, si tu dois faire ta requête linq, et que tu n'as besoin que du nom, tu peux faire:
var x = from p in tralala.Personne
select new Person{Nom=p.Nom}
Si tu veux rajouter un champs, qui ne se trouve pas dans la base de donnée mais uniquement au niveau de classe, il suffit de rajouter une nouvelle propriété à la classe Personne.
Pas sûr de voir ou est le probleme !?
- Blog-
- Site Perso-
|
|
jeudi 6 août 2009 à 09:16:42 |
Re : LINQ TO - type retour données

Kikuts
|
Ok ca y est j'ai compris ^^ dsl j'aime pas trop être dans le flou quitte à t'embêter une fois de plus :)
Encore merci ! Bonne journée ! Dès demain fera un temps de crotte donc profité (ba oui même derrière son ordi c'est plus agréable de travailler sous le soleil que la pluie lol) (je sais c'est hors topic ^^ mais il est clos donc ... :p)
|
|
Cette discussion est classée dans : type, sql, dbc, linq, dbdatacontext
Répondre à ce message
Sujets en rapport avec ce message
LINQ TO - type retour données [ par Kikuts ]
Bonjour à vous amis développeurs ! Je suis en train de créer un service web. Dans ce service, j'y code des requêtes LINQ. Avant de poser ma question
Requête LINQ basique qui ne fonctionne pas [ par Kikuts ]
Bonjour ! J'ai besoin d'aide pour un retour expérience ! Je m'explique : j'ai une application silverlight qui communique avec une base de données SQL
Linq to sql [ par laymouna98 ]
salutj'ai fait un pteit exemple avec linq et sql servermaintenent je veut bien changer la base de données au lieu de sql server en oracleest ce que je
Problème utilisation de type float du Language C# pour SQL [ par draonix ]
Bonjour à tous et à toutes,Comme les conseils que vous m'avez donnés m'ont été très utiles. J'aimerais avoir votre avis sur un petit problème que je r
Filtre sur une association en linq to sql [ par SharpMao ]
Salut à vous tous,J'ai un petit problème en linq to sql.J'ai deux tables qui sont reliées, A->B. Mais en plus de l'association sur la clé primaire, j'
Insérer CURRENT_TIMESTAMP avec SQL Sever 2005 [ par mloanthony ]
>Bonjour, > >Habitué à DB2, j'ignore comment 'insert' les millisecondes avec SQL Server 2005 dans une colonne de type datetime. > >Voici ce que j'obti
type sql [ par cudenetf ]
bonjour,j'aimerais pouvoir enregistrer des quantités dans une base de donnéesj'ai utilisé le type decimal (5,2) (je peux aller juska 999,99 si je com
Insertion date dans SQL 2005 [ par floriandevelop ]
Hello,j'aimerais insérer la date du jour, du type DateTime C# dans un champ SQL 2005 de type DateTime.Lorsque j'exécute cette requête j'obtiens le mes
Linq Méthode Field<> avec type de retour inconnu [ par lemmingperceval ]
BonjourJ'essaie de faire des filtres de recherche sur un dataGridView.Dès lors, j'ai une comboBox qui contient tous les champs de la table contenu dan
DateTime sql server [ par quitaime ]
Bonjour, J'effectue une requete sql de type UPDATE et je dois envoyer un variable de type DATETIME dans une base de donnnée sql, au niveau de la base
Livres en rapport
|
Derniers Blogs
SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet [ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS.[ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS. par Patrick Guimonet
C'est un point peu mis en avant mais SharePoint 2013 a été l'occasion de remettre de l'ordre dans les modèles de sites. Tout d'abord, un certain nombre de modèles ont été tout simplement rendus obsolètes (cf. Fonctionnalités déco...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|