迭代集合中所有唯一对的简单方法

时间:2009-07-28 10:56:24

标签: c# collections

我有一个包含多个元素的c#3 HashSet对象。我想检查每一对之间的东西,而不重复[(a,b)=(b,a)],并且不将元素与自身配对。
我想过切换到某种List,所以我可以将每个元素与他的所有后续元素配对。是否可以选择使用一般的无序Collection做类似的事情?或IQuaryable

2 个答案:

答案 0 :(得分:3)

为此,当您可以使用索引访问它们时会更容易,尽管存在ElementAt<>扩展它可能更快使用.ToList()首先。

当您有可寻址列表时:

for (int i = 0; i < list.Count-1; i++)
  for (int j = i+1; j < list.Count; j++)
     Foo(list[i], list[j]);

答案 1 :(得分:2)