Ce que j'ai est une collection nommée HourList qui est composée d'objets Hour. Deux des propriétés d'une heure sont EmployeeId et Hours. Les employés entrent et sortent et un enregistrement d'une heure est créé. Donc, au bout d'une semaine, je reçois un HourList d'objets multi-heures pour plusieurs employés de notre DAO. Il est demandé qu'un rapport soit établi lorsque seuls les employés avec un nombre total d'heures supérieur à un seuil donné sont affichés.Besoin d'aide pour le filtrage Linq en C#
Exemple: Un simple et aplatis HourList
Id | Hours ---------- 1 | 4.5 2 | 6.0 3 | 9.9 1 | 5.5 2 | 2.5
Le seuil est de 10. Dans ce cas, je ne veux un dossiers d'heure de Id 1, depuis ses heures totalisées dépassent 10.
Je sais que je pourrait le faire en créant une nouvelle méthode DAO pour gérer cela lorsque je retourne la HourList initiale. Je peux aussi le faire très inefficacement avec une déclaration foreach. J'essaie de m'améliorer avec Linq et je voudrais voir ce qu'il est possible de faire. Merci pour toute aide à l'avance.
Notez que l'efficacité de foreach et LINQ sont égaux. Les deux appellent l'énumérateur. Mais LINQ a plus de pouvoir expressif. – Abel
@Abel - Cela a du sens. Je voyais ma collection originale, un foreach imbriqué à travers chaque enregistrement d'heure par Id et les résumant. Si le montant total est supérieur au seuil, stockez cet ID et le montant total dans un nouvel objet pour le reporting. Vous avez raison, je cherchais une expression plus expressive dans Linq pour y faire face. S'il n'y a pas de gain d'efficacité, une nouvelle méthode DAO serait peut-être la meilleure. Cependant, je ne connais pas la syntaxe de Linq pour y parvenir même si je le voulais. – TForceDeveloper
La couche DAO est elle-même parfaitement adaptée pour gérer cela avec LINQ, mais je ne connais pas vos stratégies de conception et comment les données sont récupérées, mises en cache, LINQ2SQL ou LINQ2NH sont utilisées etc ... Mais voici d'autres excellentes réponses. – Abel