Diskuze: Seřazení dvoudimenzionálního pole
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Přes LINQ a nebo si na to udělej vlastní algoritmus. Není to nic složitého. Tedy podle toho který.
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);
tak v poli mám prvky - hodnoty
To OrderBy si musím udělat?
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.
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 ...
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
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();
}
}
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
Zobrazeno 9 zpráv z 9.