51 votes

Existe-t-il une fonction LINQ pour obtenir la chaîne la plus longue d’une liste de chaînes ?

Y a-t-il une `` fonction pour cela est ou devrait-on le coder soi-même comme ceci:

103voto

SimonC Points 4079

Cela le fera avec une seule itération de boucle:

40voto

Dani Points 13077

Vous pouvez utiliser ceci : ``

11voto

Javad_Amiry Points 9003
var list = new List<string>(); // or string[] or any

list.Add("a");
list.Add("ccc");
list.Add("bb");
list.Add("eeeee");
list.Add("dddd");

// max-length
var length = list.Max(s => s.Length);

// biggest one
var biggest = list.FirstOrDefault(s => s.Length == length);

// if there is more that one by equal length
var biggestList = list.Where(s => s.Length == length);

// by ordering list
var biggest = list.OrderByDescending(s => s.Length).FirstOrDefault();

// biggest-list by LINQ
var bigList2 = from s in list where s.Length == list.Max(a => a.Length) select s;

// biggest by LINQ
var biggest2 = bigList2.FirstOrDefault();

4voto

Eric Lippert Points 300275

La méthode que vous voulez est généralement appelée « MaxBy » et elle n’est malheureusement pas incluse dans l’ensemble standard des opérateurs de séquence. Heureusement, il est très facile d’écrire soi-même. Voir cette réponse pour une implémentation :

Groupe Linq par avec une sous-requête

3voto

J’ai pensé qu’il y avait un meilleur moyen d’obtenir la chaîne la plus longue d’une liste de chaînes en utilisant les expressions lambda. L’un de ces moyens est comme ci-dessous.

J’espère que cela fonctionne bien pour les chercheurs de réponses.

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