如何从对象集合中获取唯一的对象对?

时间:2016-07-20 00:38:52

标签: c# .net algorithm linq ienumerable

我想要的是一种光滑的方式,如

{ A, B, C } ---> { {A, B}, {A, C}, {B, C} }

其中ABC的类型为Widget,而{ A, B, C }的类型为Widget[]{ {A, B}, {A, C}, {B, C} }为类型为IEnumerable<Pair<Widget,Widget>>IEnumerable<Tuple<Widget,Widget>>

1 个答案:

答案 0 :(得分:0)

可以使用简单的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] };
      }
    }
}