我想要的是一种巧妙的方式,就像
{ A, B, C }
---> { {A, B}, {A, C}, {B, C} }
其中 A
、 B
和 C
的类型为 Widget
,{ A, B, C }
的类型为 Widget[]
,{ {A, B}, {A, C}, {B, C} }
的类型为 IEnumerable<Pair<Widget,Widget>>
或 IEnumerable<Tuple<Widget,Widget>>
。
可以使用一个简单的 for 循环,如果您正在寻找独特的索引,应该为您提供所需的对
public IEnumerable<IEnumerable<T>> UniquePairs<T>(T[] arr)
{
for(int i=0;i<arr.Length;i++)
{
for(int j=i+1;j<arr.Length;j++)
{
yield return new[]{ arr[i],arr[j] };
}
}
}