Evo ti dva primera sortiranja IList<T>:
Code:
class Person
{
public int ID; public string ime;
}
class Program
{
static void Main(string[] args)
{
IList<Person> ilista = new List<Person>() { new Person() { ID = 12, ime = "Pera"},
new Person() { ID = 1, ime = "Zika"},
new Person() { ID = 7, ime = "Aska"}};
string imePolja = "ID";
FieldInfo field = ilista.GetType().GetGenericArguments()[0].GetField(imePolja);
var sortedlista = (from p in ilista
orderby field.GetValue(p)
select p).ToList();
var sortedlista2 = ilista.AsEnumerable().OrderBy(x => x.ime).ToList();
}
}
Oba u principu koriste IEnumerable<T>.OrderBy() za sortiranje, samo sto sortedlista koristi kroz LINQ to Objects, a sortedlista2 kroz direktan poziv ekstenzije. Takodje, sortedlista moze da se koristi univerzalno posto koristi refleksiju (imePolja moze da ti bude ime polje na koje je korisnik kliknuo u headeru tako da ne moras da imas poseban kod za svako posebno polje, sto je slucaj sa sortedlista2. Cena univerzalnosti je sto moras kroz refleksiju, i sto za property moras da koristis PropertyInfo umesto FieldInfo.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić