Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MinBy< TSource, TKey >() [2/2]

static ? TSource System.Linq.Enumerable.MinBy< TSource, TKey > ( this IEnumerable< TSource > source,
Func< TSource, TKey > keySelector,
IComparer< TKey >? comparer )
inlinestatic

Definition at line 6702 of file Enumerable.cs.

6703 {
6704 if (source == null)
6705 {
6706 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source);
6707 }
6708 if (keySelector == null)
6709 {
6710 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.keySelector);
6711 }
6712 if (comparer == null)
6713 {
6714 comparer = Comparer<TKey>.Default;
6715 }
6716 using IEnumerator<TSource> enumerator = source.GetEnumerator();
6717 if (!enumerator.MoveNext())
6718 {
6719 if (default(TSource) == null)
6720 {
6721 return default(TSource);
6722 }
6723 ThrowHelper.ThrowNoElementsException();
6724 }
6725 TSource val = enumerator.Current;
6726 TKey val2 = keySelector(val);
6727 if (default(TKey) == null)
6728 {
6729 while (val2 == null)
6730 {
6731 if (!enumerator.MoveNext())
6732 {
6733 return val;
6734 }
6735 val = enumerator.Current;
6736 val2 = keySelector(val);
6737 }
6738 while (enumerator.MoveNext())
6739 {
6740 TSource current = enumerator.Current;
6741 TKey val3 = keySelector(current);
6742 if (val3 != null && comparer.Compare(val3, val2) < 0)
6743 {
6744 val2 = val3;
6745 val = current;
6746 }
6747 }
6748 }
6749 else if (comparer == Comparer<TKey>.Default)
6750 {
6751 while (enumerator.MoveNext())
6752 {
6753 TSource current2 = enumerator.Current;
6754 TKey val4 = keySelector(current2);
6755 if (Comparer<TKey>.Default.Compare(val4, val2) < 0)
6756 {
6757 val2 = val4;
6758 val = current2;
6759 }
6760 }
6761 }
6762 else
6763 {
6764 while (enumerator.MoveNext())
6765 {
6766 TSource current3 = enumerator.Current;
6767 TKey val5 = keySelector(current3);
6768 if (comparer.Compare(val5, val2) < 0)
6769 {
6770 val2 = val5;
6771 val = current3;
6772 }
6773 }
6774 }
6775 return val;
6776 }

References System.comparer, System.Linq.Default, System.Collections.Generic.Dictionary< TKey, TValue >.GetEnumerator(), System.Linq.keySelector, System.Linq.source, System.Linq.ThrowHelper.ThrowArgumentNullException(), and System.Linq.ThrowHelper.ThrowNoElementsException().