2016-02-14 53 views
0

请帮助我。我被困在我的数组案例中。我是新手。特别是要获得超过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[] { ',' });//{[email protected], [email protected], [email protected], [email protected]} 

首先阵列我得到了相同的从接收值和显示由该

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

那么我的问题是,如何让[email protected][email protected]? 我试过这样

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

+0

你的代码似乎有一些问题。你有'var getThesamevalue;'但根本没有赋值,没有设置值,什么都没有!那里的循环没用。 –

+0

另外,如果你在第一个和第二个数组中有相同的值({1,0,1,0,0,0,1}和{ 0,0,0,0,0,1,0}),因为它会搜索整个数组的匹配值,所有**您的值将被打印,因为它没有逻辑来比较或编辑或匹配。 –

回答

0

如果所有阵列长度相同,请使用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)

+0

非常感谢你:) –

相关问题