2010-05-31 6 views
0

J'essaie d'obtenir le Sum() à partir d'un Entityset<MyObject> avec la requête suivante.LINQ Query et DateTimes

(from MyObject p in SelectedObject.MyObjectEntitySet 
where p.AColumn.HasValue && 
p.ADate >= dateTimeValue && 
p.ADate <= dateTimeValue2 
select p.AColumn.Value).Sum(); 

sans chance de récupérer la somme correcte.

Des idées?

[EDIT] OK TRAVAILLÉ!

+1

Nous ne pouvons pas savoir ce qui ne va pas. Essentiellement, vous avez dit "cette requête ne donne pas le résultat attendu" sans dire quel résultat il * donne * ou pourquoi vous attendiez quelque chose de différent. –

Répondre

0

Vous pouvez résoudre la requête en le découpant en ses éléments constitutifs, et en examinant la sortie de chaque partie:

var entitySet = SelectedObject.MyObjectEntitySet; 
var entitySetWithValues = entitySet.Where(p => p.AColumn.HasValue); 
var entitySetGreater = entitySetWithValues.Where(p => p.ADate >= DateTimeValue); 

... et ainsi de suite.

0

Si vous voyez la liste des surcharges, la méthode Sum est au-dessus des valeurs numériques (décimal, float, int, double, long, etc). Le sélecteur doit être une fonction qui prend un DateTime et renvoie une valeur numérique. Désolé, je ne savais pas que AColumn était numérique.