2009-11-05 6 views
0

Nouveau à LINQ .. Je suis curieux de la syntaxe pour faire la requête SQL suivante dans LINQsyntaxe LINQ aide: projection et le regroupement

SELECT MAX(TMPS), DAY FROM WEATHERREADINGS 
GROUP BY WEATHERREADINGS.DAY 

Ce que j'ai jusqu'à présent:

var minTemps = from ps in ww.WEATHERREADINGS 
       group ps by ps.DATE.Hour into psByHour 
       select new 
       { 
        HourOfDay = psByHour.Max().DATE.Hour, 
        MaxTemp = psByHour.Max().TMPS 
       }; 

J'obtiens l'erreur suivante en faisant ceci:

Détails d'exception: System.InvalidOperationException: Impossible de formater le noeud 'New' pour l'exécution en tant que SQL.

toute aide grandement appréciée !!

Répondre

6

Je pense que ce qui suit est ce que vous voulez. Notez que vous pouvez obtenir la clé à partir du regroupement, il n'est donc pas nécessaire de l'agréger. Vous devez fournir un mécanisme pour sélectionner l'élément sur lequel effectuer l'agrégation pour l'autre.

var maxTemps = from ps in ww.WEATHERREADINGS 
       group ps by ps.Date.Hour into psByHour 
       select new 
       { 
        HourOfDay = psByHour.Key, 
        MaxTemp = psByHour.Max(p => p.TMPS) 
       }; 
+0

me battre par quelques secondes +1 –

+1

belle prise avec les "maxTemps" au lieu de "minTemps" * hehe * – andyp

+0

exactement ce que je cherchais merci. Maintenant, je peux l'utiliser comme une source de données et le lier à une grille – Will

2

Ou l'approche fonctionnelle que je tendance à aimer mieux:

var result = ww.WEATHERREADINGS 
       .GroupBy(a => a.Date.Hour) 
       .Select(a => new 
         { 
         Hour = a.Key, 
         Max = a.Max(b => b.TMPS) 
         }); 
+0

+1 Je suis d'accord, mais j'essaie de répondre dans le format demandé par l'OP, sauf s'il y a une raison impérieuse. – tvanfosson

+0

Votre réponse était correcte et correcte (+1). Je voulais juste fournir l'alternative. J'ai tendance à trouver que beaucoup de mes camarades juniors ont tendance à traiter Linq comme un petit addon SQL en C# et ne voient pas l'image plus globale des façons fonctionnelles de faire les choses. Quand je les expose à la syntaxe fonctionnelle, l'illumination suit. –