You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These are public extension methods. Removal breaks consumers → breaking-change, experimental, batched to yearly major, CHANGELOG migration note. Where feasible, keep [Obsolete] forwarders.
Acceptance
MoreLINQ added to Directory.Packages.props
Duplicated Distinct/Random/TakeUntil/ForEach helpers removed or obsoleted
Insights from a discarded prototype (old paths; map to onion structure after #359).
Package: MoreLinq 4.4.0 (central).
Only 2 genuine duplicates: DistinctBy and Shuffle (was Randomize). Replace via [Obsolete] forwarders.
KEEP these — not real duplicates:
TakeUntil/SkipUntil: ours is EXCLUSIVE, MoreLINQ's is INCLUSIVE. Swapping silently changes ArgumentParser + CompletionUtility.
ForEach/ForEachLazy: MoreLINQ has no Action<T,int> index overload and no ForEachLazy; ~70 callers.
single-pick Random<T>(): no MoreLINQ/BCL equivalent.
Gotcha: net10 BCL now ships DistinctBy/Shuffle, which collide with MoreLINQ's extensions. Call MoreLinq.MoreEnumerable.* explicitly so both netstandard2.0 and net10.0 resolve.
Activity
ChrisonSimtian commentedon Jun 3, 2026
Insights from a discarded prototype (old paths; map to onion structure after #359).
DistinctByandShuffle(wasRandomize). Replace via[Obsolete]forwarders.TakeUntil/SkipUntil: ours is EXCLUSIVE, MoreLINQ's is INCLUSIVE. Swapping silently changes ArgumentParser + CompletionUtility.ForEach/ForEachLazy: MoreLINQ has noAction<T,int>index overload and noForEachLazy; ~70 callers.Random<T>(): no MoreLINQ/BCL equivalent.DistinctBy/Shuffle, which collide with MoreLINQ's extensions. CallMoreLinq.MoreEnumerable.*explicitly so both netstandard2.0 and net10.0 resolve.