Utilizzando C# e Linq come restituire l'elenco < ....> con la dimensione/conteggio più grande?Elenco di restituzione con conteggio massimo utilizzando Linq
risposta
e suoni come se si dispone di n liste e si desidera individuare quella con il maggior numero.
Prova questo:
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);
Ora avete la lista con il maggior numero di elementi. Considera lo scenario in cui esistono più di 2 liste con lo stesso numero superiore di elementi.
Grazie mille !! una soluzione abbastanza completa :) –
Probabilmente è meglio usare '.First()' piuttosto che '.Take (1)', perché in questo caso si recupera la lista invece di una lista con un elemento contenente la lista. – 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);
}
sostituire i => i
con una funzione che definisce "grande formato/conteggio".
Suppongo che tu abbia una raccolta di elenchi denominata lists
e che tu voglia restituire l'elenco in questa raccolta che ha il maggior numero di elementi. Se è così, provate questo:
var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First();
In alternativa, se questo è LINQ to Objects e hai un sacco delle liste si potrebbe desiderare di provare questo per ottenere prestazioni migliori evitando la O (n log n) tipo:
int maxCount = lists.Max(list => list.Count());
var listWithLargestCount = lists.First(list => list.Count() == maxCount);
grazie Marco! Mi piace la tua soluzione. grazie per il factoring in tempo di specie :) che sarà molto utile ... –
Uhm, conto di cosa? Potresti spiegare ulteriormente, ad es. con esempio di input e output. –