Сегодня я сделал решительный шаг и начал изучать LINQ, пока что только обманывал LINQ в коллекциях. Одной из первых вещей, которые я пробовал, было внедрение QSort.
Теперь - игнорируя тот факт, что я мог просто использовать ORDERBY, и что это очень глупая реализация qsort - вот что я придумал:
public class lqsort
{
public static List<int> QSLinq(List<int> _items)
{
if (_items.Count <= 1)
return _items;
int _pivot = _items[0];
List<int> _less = (from _item in _items where _item < _pivot select _item).ToList();
List<int> _same = (from _item in _items where _item == _pivot select _item).ToList();
List<int> _greater = (from _item in _items where _item > _pivot select _item).ToList();
return (QSLinq(_less).Concat(_same.Concat(QSLinq(_greater)))).ToList();
}
}
Единственное, что действительно меня беспокоит, - это все, что связано с кастингом. Могу ли я использовать LINQ-трюки? Или я просто использую LINQ для вещей, для которых он не предназначался?