Oggi avevo la necessità di ordinare una lista di oggetti custom, creata attraverso la lista generica List
Solitamente creavo un comparer personalizzato, ma ho trovato un modo veramente molto più veloce e leggibile.
Al metodo Sort() di tale lista, è possibile passare un delegato ed effettuare la comparazione dei valori in-line, sulle proprietà dei propri elementi custom.
Quindi, a fronte di un oggetto del genere:
public class CustomItem
{
public DateTime Date { get; set; }
public double Value { get; set; }
}
Ecco come possiamo rapidamento effettuare il sorting degli elementi, su proprietà diverse:
List<CustomItem> list = new List<CustomItem>();
list.Add(new CustomItem() { Date = DateTime.Now, Value = 1.0 });
list.Add(new CustomItem() { Date = DateTime.Now.AddYears(1), Value = 0.5 });
//sort sulla data
list.Sort(delegate(CustomItem item1, CustomItem item2)
{
return item1.Date.CompareTo(item2.Date);
});
//sort su un double
list.Sort(delegate(CustomItem item1, CustomItem item2)
{
return item1.Value.CompareTo(item2.Value);
});
Il tutto senza dover creare un comparer ad hoc.
A mio parere, è una tecnica semplice e che velocizza notevolmente il lavoro.
Come effettuare rapidamente il sorting di una lista generica
Non stai sfruttando la tua intranet in azienda?