działanie na kolekcji, zliczanie powtarzających się elementów

działanie na kolekcji, zliczanie powtarzających się elementów
SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Witam, mam kolekcje dictionary w której magazynuje obiekty różnych klas, jednak dzięki dziedziczeniu maja pole wspólne, jest to identyfikatorpoprzednika.

Teraz nie mogę znaleźć funkcji której wynikiem byłaby ilość wystapień danej liczby, np mamy 9 obiektów i wyrzuca mi w ilu obiektach te pole ma wartość 1.

Pozdrawiam

FU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
2

Jeśli chcesz sprawdzić ile razy dana liczba występuje to możesz to zrobić zwykła pętlą. Wystarczy przejść po całej kolekcji i jeśli liczba == interesujaca cię liczba to ilość_wystąpień++.
Jednak jeśli chodzi o to aby wiedzieć jaka liczba występuje ile razy to można łatwo to uzyskać przez LINQ + group by.
Dla przykładu takie zapytanie może zwrócić:
liczba 1 występuje 3 razy,
liczba 4 występuje 2 razy itd.
Oczywiście można to samo uzyskać z pętlami, ale jak kto woli ;)

Zenek1999
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

LINQ rozwiąże Twoje problemy.

Kopiuj
static void Main( string[] args )
{
    var osoby = new Osoba[]{
        new Osoba{ Imie = "Jan", Nazwisko = "Kowalski" },
        new Osoba{ Imie = "Jan", Nazwisko = "Nowak" },
        new Osoba{ Imie = "Malgorzata", Nazwisko = "Kowalska" },
        new Osoba{ Imie = "Antoni", Nazwisko="Wiśniewski" }
    };

    Console.WriteLine( osoby.Count(osoba => osoba.Imie == "Jan"));

    Console.ReadLine();
}

class Osoba
{
    public string Imie;
    public string Nazwisko;    
}
ŁF
  • Rejestracja: dni
  • Ostatnio: dni
1

@Zenek1999: nie miałeś aby na myśli

Kopiuj
	var n = osoby.GroupBy(o => o.Imie).Select(o => new { Count = o.Count(), Name = o.Key });
	foreach (var m in n)
		Console.WriteLine("{0} {1}", m.Count, m.Name);

?

Zenek1999
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Nie, miałem na myśli to co napisałem. ;-)

Teraz nie mogę znaleźć funkcji której wynikiem byłaby ilość wystapień danej liczby, np mamy 9 obiektów i wyrzuca mi w ilu obiektach te pole ma wartość 1.

U mnie w przykładzie "te pole" = Imie, a "dana wartość" = "Jan".

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.