55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace System.Linq
|
|
{
|
|
// Token: 0x02000041 RID: 65
|
|
internal class OrderedSequence<TElement, TKey> : OrderedEnumerable<TElement>
|
|
{
|
|
// Token: 0x060003A1 RID: 929 RVA: 0x00010F84 File Offset: 0x0000F184
|
|
internal OrderedSequence(IEnumerable<TElement> source, Func<TElement, TKey> key_selector, IComparer<TKey> comparer, SortDirection direction)
|
|
: base(source)
|
|
{
|
|
this.selector = key_selector;
|
|
this.comparer = comparer ?? Comparer<TKey>.Default;
|
|
this.direction = direction;
|
|
}
|
|
|
|
// Token: 0x060003A2 RID: 930 RVA: 0x00010FB0 File Offset: 0x0000F1B0
|
|
internal OrderedSequence(OrderedEnumerable<TElement> parent, IEnumerable<TElement> source, Func<TElement, TKey> keySelector, IComparer<TKey> comparer, SortDirection direction)
|
|
: this(source, keySelector, comparer, direction)
|
|
{
|
|
this.parent = parent;
|
|
}
|
|
|
|
// Token: 0x060003A3 RID: 931 RVA: 0x00010FC8 File Offset: 0x0000F1C8
|
|
public override SortContext<TElement> CreateContext(SortContext<TElement> current)
|
|
{
|
|
SortContext<TElement> sortContext = new SortSequenceContext<TElement, TKey>(this.selector, this.comparer, this.direction, current);
|
|
if (this.parent != null)
|
|
{
|
|
return this.parent.CreateContext(sortContext);
|
|
}
|
|
return sortContext;
|
|
}
|
|
|
|
// Token: 0x060003A4 RID: 932 RVA: 0x00011008 File Offset: 0x0000F208
|
|
protected override IEnumerable<TElement> Sort(IEnumerable<TElement> source)
|
|
{
|
|
return QuickSort<TElement>.Sort(source, this.CreateContext(null));
|
|
}
|
|
|
|
// Token: 0x040000EC RID: 236
|
|
private OrderedEnumerable<TElement> parent;
|
|
|
|
// Token: 0x040000ED RID: 237
|
|
private Func<TElement, TKey> selector;
|
|
|
|
// Token: 0x040000EE RID: 238
|
|
private IComparer<TKey> comparer;
|
|
|
|
// Token: 0x040000EF RID: 239
|
|
private SortDirection direction;
|
|
}
|
|
}
|