比较数组并获取所选数组上的另一个数组值

本文关键字:数组 另一个 获取 比较 | 更新日期: 2023-09-27 18:34:28

请帮助我。我被困在我的阵列案例上。我是新手。特别是获取超过 2 个变量的数组。我已经浏览了谷歌,但我没有得到我想要的东西,现在我被困住了:(

我有这样的数组

string[] receive = receiveattachment.Split(new char[] { ',' });//{1,0,1,0}
string[] display = isdisplaytotal.Split(new char[] { ',' });//{1,1,1,0}
string[] ccTemp = cc.Split(new char[] { ',' });//{a@gmail.com, b@gmail.com, c@gmail.com, d@gmail.com}

首先,我从接收和显示中获得了相同的值

foreach (var receive_ in receive)
                    {
                        foreach (var display_ in display)
                        {
                            if (receive_ == display_)
                            {
                              //do something
                            }
                        }
}

那么我的问题是,如何获得 a@gmail.com,c@gmail.com?我试过这样

 foreach (var receive_ in receive)
                        {
                            foreach (var display_ in display)
                            {
                                if (receive_ == display_)
                                {
                                    string[] ccTemp = cc.Split(new char[] { ',' });
                                    for (int i = 0; i < receive.Length; i++)
                                    {
                                        if (receive[i] == "1")
                                        {
                                            if (_ccIsReceiveAndDisplay.Trim() != "") _ccIsReceiveAndDisplay += ",";
                                            _ccIsReceiveAndDisplay += ccTemp[i];
                                        }
                                        else
                                        {
                                            if (_ccIsReceiveAndDisplay.Trim() != "") _ccIsReceiveAndDisplay += ",";
                                            _ccIsReceiveAndDisplay += ccTemp[i];
                                        }
                                    }
                                }
                            }
    }

但它只会得到接收 = 1 值。 未接收 1 并显示 =1

比较数组并获取所选数组上的另一个数组值

如果所有数组的长度相同,请使用 for 和索引。

喜欢这个:

for (var index=0; index<receive.length; index++)
    if (receive[index] == "1" && display[index] == "1")
        DoSomethingWithEmail( ccTemp[index] )

这也更快,因为它只遍历数组一次,而不是数组中的每个元素一次。

作为奖励,请以linq方式获取电子邮件:

receive.Zip(display, (a,b) => new {A=a, B=b}).Zip(ccTemp, (ab,c) => new {use=ab.A=="1"&&ab.B=="1", email=c}).Where( x=> x.use ).Select( x => x.email)