3 votes

Somme des durées en utilisant LINQ to Entities

J'ai un appel LINQ de type group by, puis j'additionne les valeurs PossessionTime.Tick sous la forme d'un nouveau Timespan. Cela fonctionnait bien avant, mais maintenant j'ai besoin de garder la collection comme un IQueryable au lieu d'une liste.

PossessionTime = new TimeSpan(x.Sum(p => p.PossessionTime.Ticks))

Avec cette modification, j'obtiens maintenant l'erreur suivante :

Seuls les constructeurs et initialisateurs sans paramètre sont supportés par LINQ. to Entities.

J'ai envisagé d'utiliser DbFunctions mais il n'y a rien qui puisse aider je ne pense pas.

Ma seule option est-elle de déplacer la liste en mémoire et d'y additionner le temps ?

L'IQueryable se présente comme suit :

return stats.GroupBy(x => x.Id).OrderByDescending(x => x.Sum(a => a.Kills))
            .Select(x => new WeaponItem
            {         
                PossessionTime = new TimeSpan(x.Sum(p => p.PossessionTime.Ticks))
            });

J'ai besoin de le garder en tant que IQueryable car je l'utilise dans la pagination.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X