2016-02-14 54 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

非常感謝你:) –

相關問題