2016-02-24 4 views
3

Я пытаюсь запустить цикл for для выполнения значений, но я не уверен, как это сделать правильно.За цикл для выполнения значений

 string[] GoogleID = { "ga:1381000", "ga:1860066"}; 

     // Loop with the foreach keyword. 

     foreach (string value in GoogleID) 
      { 


      if (GoogleID.ToString() == "ga:1381000") 
      { 
       WebName = "Yes"; 
      } 
      else 
      { 
       WebName = "No"; 
      } 


      } 

Что я делаю неправильно? Как я могу проверить оба значения?

Это говорит моя строка для GoogleID.ToString = String []

+0

Попробуйте изменить, если (GoogleID.ToString() == "га: 1381000"), чтобы, если (значение == "га: 1381000" || значение == " ga: 1860066 ") – ProgrammingDude

+0

if (GoogleID.ToString() ==" ga: 1381000 "). Вы не хотите использовать GoogleID в этой строке. Вы хотите сделать, если (value == "ga: 1381000"). Вы перебираете все «элемент» в своем списке под названием «GoogleID», ваш foreach создал переменную «значение» для представления каждого элемента в этом списке. – wentimo

+0

Я думаю, он хочет проверить, содержит ли коллекция определенный предмет. – SamGhatak

ответ

7

Вы хотели бы сделать это так.

string[] GoogleID = { "ga:1381000", "ga:1860066"}; 

     // Loop with the foreach keyword. 

     foreach (string value in GoogleID) 
      { 


      if (value == "ga:1381000") 
      { 
       WebName = "Yes"; 
      } 
      else 
      { 
       WebName = "No"; 
      } 


      } 
6

Вы можете использовать LINQ:

WebName = GoogleId.Any(s => s == "ga:1381000") ? "Yes" : "No"; 
1

Вы должны исправить свой код, как показано в следующем примере фрагмента кода:

string[] GoogleID = { "ga:1381000", "ga:1860066" }; 
    string WebName; 

    // Loop with the foreach keyword. 
    foreach (string _val in GoogleID) 
    { 
     WebName = (_val == "ga:1381000") ? "Yes" : "No"; 
    } 

Для повышения производительности вы можете использовать следующий фрагмент кода :

string[] GoogleID = { "ga:1381000", "ga:1860066" }; 
    string WebName; 

    // Loop with the for keyword. 
    for (int i = 0; i < GoogleID.Length; i++) 
    { 
     WebName = (GoogleID[i] == "ga:1381000")? "Yes":"No"; 
    } 

Надеюсь, это поможет.

1

Еще одно предложение LINQ.

WebName = GoogleID.Contains("ga:1381000") ? "Yes" : "No" 
0

Вы можете использовать для цикла, как показано ниже: -

string[] GoogleID = { "ga:1381000", "ga:1860066" }; 
      //use for loop 
      for (int i = 0; i < GoogleID.Length; i++) 
     { 
      if (GoogleID[i].ToString() == "ga:1381000") //use index here 
      { 
       WebName = "Yes"; 
      } 
      else 
      { 
       WebName = "No"; 
      } 
     } 
0

уаг WebName = GoogleID.Contains ("га: 1381000")? «Да»: «Нет»

0

Каждый раз в цикле он проверял первый элемент в вашей группе (GoogleID или GoogleID [0]). Таким образом, всегда верно и всегда печатать «да» Он должен быть проверен на «значение». См. Незначительные изменения ниже. Я изменил «значение» на X, чтобы выделить его.

string WebName;

string[] GoogleID = { "ga:1381000", "ga:1860066"}; 

    // Loop with the foreach keyword. 

    foreach (var X in GoogleID) 
     { 
      if (X == "ga:1381000") 
      { 
       WebName = "Yes"; 
      } 

      else 
      { 
       WebName = "No"; 
      } 
     } 

Полностью функционирующий версия здесь: https://dotnetfiddle.net/lihDeY