J'ai une liste de client et j'ai besoin de trier et de grouper la liste selon la règle métier.Regroupement et tri dans linq
- Groupe par Nom du client
- Trier par Nom du client dans l'ordre alphabétique
- s'il y a plusieurs résultats pour le même nom, ils doivent triés par date de naissance dans l'ordre croissant (le plus ancien est répertorié premier)
Ci-dessous l'entité.
public class Customer
{
public string FirstName {get; set;}
public string LastName {get; set;}
public DateTime DateofBirth {get; set;}
}
Merci d'avance.
customers.GroupBy(c => c.FirstName)
.Select(c => c.OrderBy(c => c.FirstName).ThenBy(c => c.LastName));
troisième règle est pour le cas si la liste ont plus l'un client ayant même prénom. À ce moment, trier par DateofBirth. –
Comme je l'ai mentionné plus tôt - si vous avez plus d'un client avec le même nom, ils seront regroupés en un seul. Mais si vous ne voulez pas les "fusionner", vous n'avez pas vraiment besoin de 'GroupBy' - utilisez juste' OrderBy (...). ThenBy (...). ThenBy (...) '. Quel genre de sortie attendez-vous, btw? Si vous voulez une liste plate - utilisez 'ToList()' sur mes requêtes, au cas où vous voulez, par exemple, 'List>' - appliquer 'ToList()' à la réponse de Mark Heath. –
Yakimych