En utilisant C# et Linq comment devrais-je retourner la liste < ....> avec la plus grande taille/compte?Retour liste avec le nombre maximum en utilisant Linq
Répondre
Il sons comme si vous avez n listes et que vous souhaitez isoler celui avec le plus grand nombre.
Essayez ceci:
List<int> ints1 = new List<int> { 10, 20, 30 };
List<int> ints2 = new List<int> { 1, 2, 3, 4 };
List<int> ints3 = new List<int> { 100, 200 };
var listWithMost = (new List<List<int>> { ints1, ints2, ints3 })
.OrderByDescending(x => x.Count())
.Take(1);
Vous avez maintenant la liste avec le plus grand nombre d'éléments. Considérez le scénario où il y a 2+ listes avec le même nombre supérieur d'éléments.
Merci beaucoup !! Une solution assez complète :) –
Il est probablement préférable d'utiliser '.First()' que '.Take (1)', car vous récupérerez alors la liste au lieu d'une liste contenant un élément contenant la liste. – recursive
int[] numbers = new int[] { 1, 54, 3, 4, 8, 7, 6 };
var largest = numbers.OrderByDescending(i => i).Take(4).ToList();
foreach (var i in largest)
{
Console.WriteLine(i);
}
remplacer i => i
avec une fonction définissant "la plus grande taille/nombre".
Je suppose que vous avez une collection de listes appelées lists
et vous voulez retourner la liste dans cette collection qui a le plus d'éléments. Si oui, essayez ceci:
var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First();
Alternativement, si c'est LINQ à des objets et vous avez un beaucoup des listes que vous voudrez peut-être essayer d'obtenir de meilleures performances en évitant O (n log n) tri:
int maxCount = lists.Max(list => list.Count());
var listWithLargestCount = lists.First(list => list.Count() == maxCount);
merci Mark! J'aime ta solution. merci pour l'affacturage en temps de tri :) ce sera très utile ... –
Uhm, le compte de quoi? Pourriez-vous expliquer davantage, par ex. avec exemple d'entrée et de sortie. –