Aspect important reste ce que vous voulez faire avec les données filtrées à chaque niveau, comme vous le savez, linq aux objets, utiliser un mécanisme de chaînage, où résultat d'un niveau est alimenté comme une entrée au niveau suivant, certains comme:
var result = OriginalList.Where(Condition1) - Level1
.Where(Condition2) - Level2
.Where(Condition3) - Level3
.Where(Condition4) - Level4
Ici, la sortie Level1 est une entrée pour Level2, et ainsi de suite. S'il n'y a pas de données à un certain niveau, cela garantira que l'ensemble de niveaux suivant est ignoré en interne, comme toute condition sur l'ensemble vide et l'ensemble vide.
Pour obtenir un résultat à tous les niveaux, vous devez les séparer dans des variables distinctes et faire l'enchaînement sur votre propre, en fonction des exigences conditionnelles que vous pourriez avoir, quelque chose comme:
var result1 = OriginalList.Where(Condition1)
var result2 = result1.Where(Condition2)
Donc et ainsi de suite, où avant d'appliquer la clause where sur le résultat 1, vous pouvez appliquer une vérification conditionnelle. Si je comprends bien, vous voudrez peut-être un enregistreur standard pour imprimer les détails à chacun des sous-point, mettre en œuvre la méthode d'extension comme suit:
public static class LoggingExtension
{
public static void Log<dynamic>(IEnumerable<dynamic> collection)
{
// Use the favorite logger to log the collection here
}
}
Si j'utilise le code ci-dessus pour result1 d'impression, result2, ce que vous avez besoin est:
var result1 = OriginalList.Where(Condition1)
result1.Log();
var result2 = result1.Where(Condition2)
result2.Log();
J'utilise le type dynamique dans la méthode d'extension ci-dessus, afin d'éviter l'extraction du type d'un anonyme, en interne, vous pouvez taper jeter à ne importe quel type et l'utiliser dans l'enregistreur
Merci pour la réponse – memumani
C'est ce que vous cherchiez? (En outre, il semble que vous avez commenté votre question au lieu de sur ma réponse: P) –
Merci pour la réponse. Diverses requêtes sont à différents endroits où je veux enregistrer ces informations. Au lieu d'apporter des changements à plusieurs endroits, y a-t-il une approche générative pour le garder au même endroit ou avec des changements minimes? – memumani