比较数组并获取所选数组上的另一个数组值
本文关键字:数组 另一个 获取 比较 | 更新日期: 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)