begin process at 2010 02 10 01:29:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

Autre

 > 

Linq & nullable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Linq & nullable

dimanche 17 mai 2009 à 20:23:01 | Linq & nullable

Djzlouk

Bonjour, Je suis sûr du Linq en ce moment et ca me pose quelques soucis. je suis sur que vous allez savoir comment faire. Voici ma requete linq : var suivi = from c in dao.Users select new { prenomNom = c.Prenom + " " + c.Nom, enregistrement = c.Avenants.Sum(d => d.MontantAffaire), devisEnCours = (from e in dao.Devis where e.DelegueeA == c.DelegueA select e.Montant).Sum(), objectif = c.ObjectifEnregistrement.Value }; Donc, j'ai des sous requetes ou je fait juste des Sum. Malheureusement, ce sont des valeurs qui peuvent etre null. Du coup j'ai ce message : 'La valeur null ne peut pas être assignée à un membre de type System.Decimal, car il s'agit d'un type valeur non nullable.' Comment faire pour ne pas que cela plante et marquer 0 quand c'est null ? Merci des aides
dimanche 17 mai 2009 à 22:29:02 | Re : Linq & nullable

Bidou

Administrateur CodeS-SourceS
Bonsoir,
En principe ça doit marcher "sans rien faire":

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };
float? sum = points.AsQueryable().Sum();
Console.WriteLine("Total points earned: {0}", sum);
(exemple MSDN)



-Blog-
-Site Perso-
lundi 18 mai 2009 à 07:13:31 | Re : Linq & nullable

SharpMao

Membre Club
Hello,

Je pense qu'une de tes variables enregistrement ou devisEnCours n'est pas nullable.
Si une des sommmes ne trouve que des valeurs nulles, elle retournera null aussi.
Pour changer ça, tu peux faire un GetValueOrDefault après le Sum, et ça devrait marcher.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
lundi 18 mai 2009 à 10:00:14 | Re : Linq & nullable

Djzlouk

Yop ! C'est exactement ca, toutes les valeurs sont null du coup, il retourne null (ce qui est logique). le GetValueOrDefault me semble donc parfait ! Malheureusement quand je le met apres mon Sum VS me dit : 'cannot resolve symbole GetValueOrDefault' (le controle espace ne connait pas non plus). Alors j'ai cherché si ne n'etait pas ma requete qui sera mal tourné qui fait que cela ne marche pas, mais non, rien à faire. Ca marche pas. Il faut ajouter des references pour que GetValueOrDefault fonctionne ? ou j'ai raté un truc ? Merci :)
lundi 18 mai 2009 à 11:40:51 | Re : Linq & nullable

krimog

Salut

Une autre solution (système D) consisterait à faire un truc du genre (dans ta requête linq) :
var machin = from bidule in source.table select new { monDouble = (bidule.monDouble != null) ? bidule.monDouble.Value : 0 };

Je ne garantis rien, mais ça ne coûte rien d'essayer...

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
lundi 18 mai 2009 à 13:49:02 | Re : Linq & nullable

Bidou

Administrateur CodeS-SourceS
J'ai toujours pas compris le problème...
Si je fais:

float?[] points = { null, null, null, null, null };
float? sum = points.Sum();

sum = 0, non ?



-Blog-
-Site Perso-
lundi 18 mai 2009 à 14:03:48 | Re : Linq & nullable

Djzlouk

Re, En faite mon probleme c'est plutot : float?[] points = { }; // Donc rien du tout float? sum = points.Sum(); Console.WriteLine(sum); Mais, dans le cas que tu donnes et dans celui que je donne le résultat est bien 0. Cela marche donc tres bien. Mais dans mon vrai cas... ca marche pas. Je vous rappel ma requete : var suivi = from c in dao.Users where c.ObjectifEnregistrement != null select new { prenomNom = c.Prenom + " " + c.Nom, enregistrement = c.Avenants.Sum(d => d.MontantAffaire), devisEnCours = (from e in dao.Devis where e.DelegueeA == c.DelegueA select e.Montant).Sum(), devispondere = (from e in dao.Devis where e.DelegueeA == c.DelegueA select e.MontantPondere).Sum(), objectif = c.ObjectifEnregistrement };
lundi 18 mai 2009 à 14:04:58 | Re : Linq & nullable

Djzlouk

Désolé, mes messages sont illisible, car ils sont sur une ligne. il faut ajouter des br à la main ?

test !
lundi 18 mai 2009 à 21:23:48 | Re : Linq & nullable

Bidou

Administrateur CodeS-SourceS
Le mise en page c'est parce que tu utilises un browser un peu exotique!!!?
Essayes avec IE ou Firefox, ça doit passer...

Pour ton problème, serait bien si tu pouvais mettre un code qui fonctionne pas et qui est facilement testable.
Car là tu t'imagines bien que je peux pas tester la requête, donc si tu pouvais fournir quelques objets qu'on puisse facilement tester...



-Blog-
-Site Perso-
lundi 18 mai 2009 à 22:23:57 | Re : Linq & nullable

Djzlouk

(Je suis sous google chrome, je vais tester sous IE8, on va bien voir) Sinon, j'ai trouvé grace à toi Bidou ! (merci :p) Afin de vous donner un exemple, j'ai du regarder de pres la classe linqToSql qui transforme toute ma base de données en objet. Comme j'ai 'bien' configuré ma base avec des elemenst not Null et bien certain objet on hérité de ces parametres et donc ne peuvent pas etre null. Il n'existera donc jamais : float?[] points = { null, null, null, null, null }; Par contre, l'objet ne gere pas : float?[] points = { }; Car il n'a pas le droit d'etre null ! C'est un peu bizarre que cela ne soit pa gérer tout seul ! Du coup, je vais retoucher à toute ma base de données et autoriser le null partout... Ensuite je vais traiter les null grace à GetValueOrDefault. Merci à tous.

1 2

Cette discussion est classée dans : from, in, sum, linq, nullable


Répondre à ce message

Sujets en rapport avec ce message

syntaxe de réquete sum in c# [ par baby85 ] je veux savoir le syntaxe de la requete sumjé deja fait mais il m afiiche un msge d'erreurstring req = "select sum debit from station ";commen linq to sql [ par laymouna98 ] salut à tous je veut ajouter à mon projet un fichier de type LinkObjets, c'est un fichier qui à l'extension .dbml, mais le problème c'est ce modèle n' Probleme d'ajout avec Linq [ par dordenart_michel ] Bonjour à tousJ'ai un petit souci concernant l'ajout d'un enregistrement avec LINQ.Voici Mon Morceau de code            string strConnection = "Data S 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 Requetes Linq to Entity [ par Donpi ] Alors c'est l'histoire d'un manchot qui développe en C# avec linq et qui en a un peu marre que rien ne marche...Le problème est pas très compliqué, j' PROBLEME LINQ to DATASET URGENT : insérer, modifier, supprime [ par Vince62290 ] Bonjour à tous, je dois résoudre absolument mon problème cette semaine (fin de mon projet).Comment peut-on insérer, modifier, supprimer une ligne dans Nhibarnate et base de données oracle [ par laymouna98 ] Bonjourest ce que quelqu'un a travailler avec nhibernate et une base de données oraclej'ai un problème au niveau de configuration et au niveau de conn Appeler une fonction C depuis c# [ par bossun ] Salut, j'essaie désespérément d'appeler une fonction c depuis un programme c#. Ma fonction C est déclarée comme tel :Code : Problème SELECT SUM avec ExecuteScalar() [ par safir2000 ] Bonjour,je rencontre un problème avec l'execution d'une requete SUM en C# sur une DB Mysql:deffinition de la connection puis:Connection.Open();string< comment je ecri text sur in image [ par sidi100 ] je un image et je text box sur form .je veux quand je ecris text dans text box . je trouverai la text coller sur l`image et peux enrigster l nivou


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales