2016-02-14 2 views
0

Пожалуйста, помогите мне. Я застрял в моем массиве. Я новичок в этом. Для получения массива более двух переменных. Я уже просматривающие в Google, но я не получил то, что я хочу, и теперь я застрял на нем :(Сравнение массива и получение другого значения массива в выбранном массиве

У меня есть массив как этот

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

Большое вам спасибо :) –

Смежные вопросы