Можно использовать:
if ($(selector).is('*')) {
// Do something
}
А мало более изящный, возможно.
У меня есть пример реализации , на которую вы можете посмотреть. Он никоим образом не предназначен для эффективного использования, но он должен помочь вам начать работу.
Обычно IOrderedEnumerable
просто должен иметь представление о его текущем порядке, чтобы он мог создать новый. . Предполагая, что у вас уже есть IComparer
, вы создаете новый, сказав что-то вроде:
int Compare(T first, T second)
{
if (baseComparer != null)
{
int baseResult = baseComparer.Compare(first, second);
if (baseResult != 0)
{
return baseResult;
}
}
TKey firstKey = keySelector(first);
TKey secondKey = keySelector(second);
return comparer.Compare(firstKey, secondKey);
}
Таким образом, вы создаете цепочку компараторов от «наименее значимых» до «наиболее значимых» . Вам также необходимо указать «нисходящий» бит, но это легко :)
В примере, приведенном выше, три различных аспекта представлены в трех разных классах, уже присутствующих в MiscUtil :
ReverseComparer
: