Jak rozumiem chcesz zrobić plik zapisu dla gry, właśnie w postaci top listy. Na Twoim miejscu skorzystałbym z Newtonsoft.Json bo wtedy nie musisz się bawić w skryptowanie tego. Zrobiłbyś to w ten sposób:
Deklarujesz klasę w której przechowujesz dane na temat miejsca. Na przykład:
Class Wynik
{
public string NickGracza { get; set;}
public TimeSpan CzasGry { get; set;}
public DateTime Data { get; set; }
public int Runda { get; set; }
public int PoziomTrudnosci { get; set; }
public int IloscPunktow { get; set; }
}
Gdy już mamy klasę to stworzymy sobie kolejną klasę, która będzie przetrzymywała listę typu Wynik.
class WynikiKolekcja
{
private List<Wynik> _Wyniki;
public List<Wynik> Wyniki
{
get { return _Wyniki; }
set { _Wyniki= value; }
}
}
Następnie w Nuget Manager dodajesz sobie: Newtonsoft.Json
Gdy już to zainstalujesz, to w momencie, gdy chcesz wczytać wyniki robisz to w ten sposób:
private void WczytajWyniki()
{
string SciezkaDoPlikuZapisu="";
string Data = System.IO.File.ReadAllText(SciezkaDoPlikuZapisu);
WynikiKolekcja wynikiKolekcja = Newtonsoft.Json.JsonConvert.DeserializeObject<WynikiKolekcja>(Data);
//Mozesz sobie to gdzies przypisac, zeby nie musiec wczytywac danych ponownie.
}
Nastpępnie możesz sortować wszystko za pomocą LINQ.
Pamiętaj, żeby dodać :
using System.Linq;
Robisz to w ten sposób:
private void SortujWedlugLiczbyPunktow()
{
//
//KolekcjaWynikow to zmienna do ktorej jak wczesniej wspomnialem warto przypisac wynik, zeby nie musiec odczytywac wszystkiego ponownie.
//
var Wyniki=KolekcjaWynikow.Wyniki;
var WynikiPosortowaneWedlugLiczbyPunktow=Wyniki.OrderBy(c => c.IloscPunktow).ToList();
}
Jeśli chodzi o zapis danych, bo wiadomo, że po grze będzie więcej danych to robisz to następująco:
private void ZapiszDane()
{
string SciezkaPlikuZapisu="";
var Data = Newtonsoft.Json.JsonConvert.SerializeObject(KolekcjaWynikow, Newtonsoft.Json.Formatting.Indented);
System.IO.File.WriteAllText(SciezkaPlikuZapisu, Data);
}