Witam. Program jako zadanie ma wypisać modę. Problem jest w tym, że może pojawić się więcej niż jedna moda:
Przykładowe elementy tablicy: {1, 1, 2, 2, 3,}
Program wypisuje tylko "2".
int mode = a.GroupBy(v => v).OrderByDescending(d => d.Count()).First().Key;
Console.Write("\nModa: " + mode);
Chciałbym to przekształcić w taki sposób, żeby wypisywało więcej niż jedną modę. Prawdopodobnie problem tkwi w First(). Poszukałem troszkę i gdzieś zalecają użycie SelectMany. Jednak po wielu nieudanych próbach nie udało mi się. Dodatkowo jak wklepać tam jakiś warunek, który by sprawdził, czy jakieś liczby się powtarzają? Bo jeśli żadna się nie powtarza (np. 1, 2, 3 ,4, 5) to wypisze "5".
Druga sprawa to konwersja z VB na C#. Konwertery, które są dostępne online nie wspierają LINQ, dlatego jeśli ktoś zna się na VB i C# to ucieszę się chociażby z przekształcenia poniższego kodu VB na C#.
Dim modes = From a In _
(From n In numbers _
Group n By n Into g = Count() _
Select g, n) _
Where a.g = _
(From n In numbers _
Group n By n Into g = Count() Select g).Max _
Select a.n