Avatar
jenda
Člen
Avatar
jenda:

Mám 100 prvků pole, kde každý prvek se skládá ze dvou hodnot. Je možné toto pole setřídit podle první z hodnot? Tedy mám 100 párů nějakých [a,b] a šlo by to setřídit podle a? Šlo by to pomocí Array.Sort ?
Díky moc

 
Odpovědět 17.8.2013 9:55
Avatar
Odpovídá na jenda
Michael Olšavský:

Přes LINQ a nebo si na to udělej vlastní algoritmus. Není to nic složitého. Tedy podle toho který.

Editováno 17.8.2013 10:09
 
Nahoru Odpovědět 17.8.2013 10:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na jenda
David Čápka:

Doufám, že v tom poli máš objekty a ne další pole. Samozřejmě to jde a dokonce i velmi jednoduše:

pole.OrderBy(p => p.Vlastnost);
Nahoru Odpovědět 17.8.2013 10:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
jenda
Člen
Avatar
Odpovídá na David Čápka
jenda:

tak v poli mám prvky - hodnoty

To OrderBy si musím udělat?

 
Nahoru Odpovědět 17.8.2013 10:55
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na jenda
David Čápka:

Píšeš, že máš v poli vždy 2 hodnoty. Proto se ptám jak to máš udělané. OrderBy si udělat samozřejmě nemusíš, je to součást LINQu, jak jsem psal výše.

Nahoru Odpovědět 17.8.2013 10:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
jenda
Člen
Avatar
Odpovídá na David Čápka
jenda:

Uf, s LINQ se setkávám poprvé :-) Můžeš mi prosím postup více přiblížit?
V životě jsem s tím nedělal, takže vůbec netuším o co jde ...

 
Nahoru Odpovědět 17.8.2013 15:54
Avatar
hanse
Člen
Avatar
Odpovídá na jenda
hanse:

Pro úvod do LINQu se můžeš juknout třeba na místní tutorial o kolekcích, abys měl představu, jak se používá (8.-10. kapitola):
http://www.itnetwork.cz/…lekce-a-linq

 
Nahoru Odpovědět 17.8.2013 17:54
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

Buď tu máš nato seriál => http://www.itnetwork.cz/…-linq-dotazy

A kdybys nepochopil tak tu máš jak by to třeba mohlo vypadat:

class A
    {
        public int Num1 { get; set; }
        public int Num2 { get; set; }

        public override string ToString()
        {
            return Num1 + " " + Num2;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IList<A> unsortedList = new List<A>();
            for (int i = 0; i < 10; i++)
            {
                if (i % 2 == 0)
                    unsortedList.Add(new A { Num1 = i, Num2 = i*i });
                else
                    unsortedList.Add(new A { Num1 = 2*i, Num2 = i });
            }
            foreach (var item in unsortedList)
                Console.WriteLine(item);

            Console.WriteLine();

            var sortedList = unsortedList.OrderBy(n => n.Num1).ThenBy(n => n.Num2);

            foreach (var item in sortedList)
                Console.WriteLine(item);

            Console.ReadLine();
        }
    }
Editováno 17.8.2013 17:57
 
Nahoru Odpovědět 17.8.2013 17:55
Avatar
jenda
Člen
Avatar
jenda:

díky všem, nakonec jsem to udělal takto:

class Rekord
{
    public double rychlost;
    public string hrac;

    public Rekord(string Hrac, double Rychlost)
    {
        rychlost = Rychlost;
        hrac = Hrac;
    }
}

vytvořil jsem objekt Rekord[] vysledek = new Rekord[6];

a třídění pak:

Array.Sort(vysledek, delegate(Rekord vysledek1, Rekord vysledek2)
{
    return vysledek1.rychlost.CompareTo(vysledek2.rychlost);
});

Možná to není úplně ideálně a správně, ale funguje to :-)

 
Nahoru Odpovědět 19.8.2013 8:38
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 9 zpráv z 9.