Diskuze: Nejčastější barva v listu

C# .NET .NET (C# a Visual Basic) Nejčastější barva v listu American English version English version

Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

Ahoj, není v C# nějáká funkce na vrácení nejčastější položky v listu? Jestli ne, tak jak by se dala z listu barev vybrat barva která je tam nejčastěji?

Odpovědět 16.4.2013 17:45
Přecházím na "Cross-Platform Development"
Avatar
paanoik
Člen
Avatar
Odpovídá na Theodor Johnson
paanoik:

Není, ale napsat si něco takového je otázka pár minut. Těžko říct, k čemu to je, resp. co je v listu, čím se plní a jak často, ale popřemýšlej nad oddělenou kolekcí/hashtable, kde si budeš počítat ty hodnoty už při vytváření/upra­vování toho listu. Zapouzdření toho listu do vlastní třídy by bylo pak minimálně vhodné.

 
Nahoru Odpovědět 16.4.2013 18:13
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Theodor Johnson
Petr Nymsa:

Možná by to šel použít LINQ ale nevím. Jinak bych to řešil projetím prvků a spočítal počet, nic složitého... tady je možná fugjící příklad přes LINQ

var query = list.SelectMany(x => x.Names)
                .GroupBy(s => s)
                .Select(g => new { Name = g.Key, Count = g.Count() });
Nahoru Odpovědět 16.4.2013 18:18
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Petr Nymsa
Theodor Johnson:

Díky, hned jak vyřeším jak přepsat List<List<Color>> do pole tak to zkusím

Nahoru Odpovědět 16.4.2013 18:23
Přecházím na "Cross-Platform Development"
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Theodor Johnson
Petr Nymsa:

List v Listu se mě osobně moc nelíbí. Mnohem hezčím řešení podle mě, idky žve výsledku je to skoro to samé, je vytovři třídu, která bude mít List<Color>.

class ColorSet
{
  public List<Color> Colors{get;set;}

  public ColorSet(List<Color> c)
  {this.Colors=c;  }

}

// použití

List<ColorSet> allColors;

Jinak přepsání Listu do pole jde snadno. Buď metodou CopyTo() nebo metodou ToArray(). První pouze zkopíruje list do pole, dtuhá list převede do pole.

Nahoru Odpovědět 16.4.2013 18:26
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Petr Nymsa
Theodor Johnson:

Ale já nemůžu prostě zkopírovat list do pole, ještě ho před tím musím z barev převíst na čísla ale to už není nic těžkýho, to mam za chvilku hotový pomocí switcheru

Nahoru Odpovědět 16.4.2013 18:49
Přecházím na "Cross-Platform Development"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.