Potrzebuję stworzyć pętle foreach która będzie porównywała obrót wszystkich z pracowników(ich obrót umieszczony jest w listboxie) ze średnim obrotem wszystkich pracowników. Pracownicy którzy mają poniżej średniej kwalifikują się do zwolnienia. Chce aby każdy wpis w list boxie po spełnieniu warunku że są do wywalenia iterował zmienna licznik. Co robię źle ?
0
0
Porównujesz z kolekcją, nie z konkretną wartością co oczywiście nie ma sensu.
Jakiego typu elementy są w listboxie?
Poza tym masz średnik za foreach.
0
Są to liczby a dokładnie obrót jaki wykonał pracownik w ciągu roku. To zamiast listbox1.items co mam napisać aby porównywało z wartością danego pracownika a nie ze wszystkim na raz ?
0
To nawet nie porównuje ze wszystkimi na raz. Ten kod nie ma sensu więc ciężko go wytłumaczyć.
Widzę w kodzie że są to liczby decimal
.
W takim razie robisz tak:
// Elementy z listboxa konwertujemy na listę decimal
List<decimal> numbers = listBox1.Items.Cast<decimal>().ToList();
decimal average = numbers.Average(); // Obliczanie średniej można zrobić tak
int count = 0; // Ilość wystąpień
foreach (decimal number in numbers)
{
if (number > average)
count++;
}
Albo:
// Elementy z listboxa konwertujemy na listę decimal
List<decimal> numbers = listBox1.Items.Cast<decimal>().ToList();
decimal average = numbers.Average();
int count = numbers.Where(e => e > average).Count(); // Zamiast pętli foreach