Per riordinare gli elementi di una lista generica, ci si deve affidare al metodo Sort().
Quando si utilizzano tipi semplici (Int32, String, Boolean, etc) questo metodo è più che sufficiente, ma quando si utilizzano le classi non lo è più in quanto bisogna specificare in base a quale campo della classe riordinare. In questo caso si deve ricorrere all'utilizzo di un comparer, e tramite questo intervenire nel proceso di ordinamento.
Per creare un comparer generico, bisogna implementare l'interfaccia IComparer<T> e gestire il metodo Compare che viene invocato dal metodo sort quando deve effettuare il confronto tra 2 elementi.
using System; public sealed class GenericComparer<T> : IComparer<T> { private string _sortColumn; private ListSortDirection _sortDirection; public GenericComparer(string sortColumn, ListSortDirection sortDirection) { SortColumn = sortColumn; SortDirection = sortDirection; } public string SortColumn { get { return _sortColumn; } private set { _sortColumn = value; } } public ListSortDirection SortDirection { get { return _sortDirection; } set { _sortDirection = value; } } public int Compare(T x, T y) { PropertyInfo propertyInfo = typeof(T).GetProperty(SortColumn); IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null); IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null); if (SortDirection == ListSortDirection.Ascending) return (obj1.CompareTo(obj2)); else return (obj2.CompareTo(obj1)); } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Implementare il throttling in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Utilizzare la libreria Benchmark.NET per misurare le performance