[C#] Удобная сортировка. Генератор Comparison<T>
От: Быстрое Гонзало  
Дата: 26.06.06 17:13
Оценка: 32 (4)
По набору названий полей или методов класс генерит динамический Comparison<T> используя который потом можно чего-нибудь отсортировать.
Встроено два метода, зовущие стандартные Array.Sort() и List<>.Sort();
Можно указывать поля вложенных объектов, главное чтоб то, по чему сортируем, реализовывало CompareTo(). (С nullable`ами не работает)
Ну в примере все видно.

Хранит все однажды сгенеренные методы в словаре.
Работает, конечно, медленнее чем не динамические методы, но не в 2а раза.
Особенно полезен, когда заранее не известны ни тип сортируемых объектов ни критерий.


Пользоваться так:


 public class Tst
    {
        public int    field1 = 1;
        public string field2 = "field2";
        public double prop1
        {            get { return (double)field1; }        }
        public DateTime method1()
        {            return DateTime.Now;        }
    }

Tst[] tst; //List<Tst> tst;

ILRSort.Sort(tst, "field1");
ILRSort.Sort(tst, "field2[desc]"); //descending
ILRSort.Sort(tst, "prop1, method1()[desc], field2"); 
            
ILRSort.Sort(tst, "prop1, method1().Ticks.ToString()[desc]");
ILRSort.Sort(tst, "prop1, prop1,prop1,prop1,prop1 "); // и т.д.
ILRSort.Sort(tst, "method1().ToShortDateString().GetHashCode().ToString().Length.ToString()");//и т.п
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.