C#数组中的每个项目与同一数组中的每个其他项目

C#数组中的每个项目与同一数组中的每个其他项目,c#,arrays,list,C#,Arrays,List,我有一个项目数组,我想做的是某种循环,我将使用该数组中的每个对象,并对该数组中其余的每个对象运行一个测试函数 我不想使用两个相同的对象两次,这意味着如果A和B被检查,B和A将不会被检查 假设我有一个B C D数组 现在我想做的是 A B A C D B C B-D C D 这样就不会有两个相同的元素打印两次。这是一个简单的嵌套循环: int[] myArray = new int[1000]; for (int x = 0; x < myArray.Length; ++x) {

我有一个项目数组,我想做的是某种循环,我将使用该数组中的每个对象,并对该数组中其余的每个对象运行一个测试函数

我不想使用两个相同的对象两次,这意味着如果A和B被检查,B和A将不会被检查

假设我有一个B C D数组 现在我想做的是

A B

A C

D

B C

B-D

C D


这样就不会有两个相同的元素打印两次。

这是一个简单的嵌套循环:

int[] myArray = new int[1000];

for (int x = 0; x < myArray.Length; ++x)
{
    for (int y = x+1; y < myArray.Length; ++y)
    {
        // do something with x and y
    }
}
int[]myArray=newint[1000];
对于(int x=0;x

您应该了解,对于大型阵列,这可能需要很长时间。组合的数量为
n*(n-1)/2
。因此,如果您的数组包含1000个项目,您将有近500000个组合需要检查。

您能显示一些代码吗?您的问题似乎很困惑,但请尝试使用LINQ的
Distinct()
方法。听起来像是一个标准的组合问题。您是否尝试过生成所有组合?有大量的StackOverflow帖子展示了如何操作。不,这将使用x和y两次,因为x将使用一次,当对象y变成x时,将使用第二次…@user3025332:你是什么意思?对于3项,这将给出
0,1
0,2
1,2
。它不会复制组合(例如,它不会给出
1,0
)。试着自己一步一步地完成它,并密切注意
y
是如何初始化的。我用一个例子更新了OP。这个循环完全按照你在OP中输入的顺序进行,即使是按照这个顺序。请试一试。