Permutations: Difference between revisions

→‎{{header|C sharp|C#}}: Added C# Recursive Linq Solution
(→‎{{header|C sharp|C#}}: Added C# Recursive Linq Solution)
Line 1,422:
 
=={{header|C sharp|C#}}==
Recursive Linq
{{works with|C sharp|C#|7}}
<lang csharp>public static IEnumerable<IEnumerable<T>> Permutations<T>(this IEnumerable<T> values)
{
if (values.Count() == 1)
return values.ToSingleton();
return values.SelectMany(v => Permutations(values.Except(v.ToSingleton())),(v, p) => p.Prepend(v));
}</lang>
Usage
<lang sharp>Enumerable.Range(0,5).Permutations()</lang>
A recursive Iterator. Runs under C#2 (VS2005), i.e. no `var`, no lambdas,...
<lang csharp>public class Permutations<T>