2009-11-09 6 views
3

Je cherche à grouper et trier une liste générique <>. J'ai une liste d'objets représentant des fichiers et chacun de ces objets a une propriété FileName, FileType et FileDate. FileType est défini en tant qu'énumération.C# Regroupement/Tri d'une liste générique <> en utilisant LINQ

J'ai un code de travail qui me permet de regrouper des listes de fichiers par FileType.

var fileGroups = fileList.GroupBy(f=> f.FileType) 

foreach (var group in fileGroups) 
{ 
    foreach (var file in group) 
    { 
    } 
} 

Ce que je voudrais être en mesure de faire est de commander par la valeur des groupes de fichiers d'énumération FileType puis chaque groupe au sein des groupes de fichiers par le FileDate.

Répondre

5
var sortedThing = fileGroups 
        .OrderBy(g => g.Key)    // (1) Order the groups 
        .Select(g => g.OrderBy(f => f.FileDate)); // (2) Order *each* group 

Vous avez besoin des groupes triés (1) et de chacun des groupes triés en interne (2);

+0

Il n'aime pas g.Key dans .OrderBy (g => g.Key), se plaignant que mon objet ne contient pas de définition pour Key? – Andrew

+0

Désolé, mon erreur, dois inverser l'ordre des opérations ... –

+0

Cela a fait l'affaire, merci beaucoup pour votre aide. – Andrew

Questions connexes