2016-06-30 2 views
-5

У меня есть проблема в сравнении номера со всем товаром в List.Как сравнить число со всем числом в списке List List?

Потому что в нижнем коде. Вы можете видеть, когда i = 1, заявление if-else не будет выполнено. Потому что это foreach все значения.

Первые значения равны 0. Я не хочу этого случая.

Есть ли способ сравнения i со значением всех значений?

Спасибо.

List<int> values = new List<int>(); 
private void CheckCondition() 
{ 
    bool flag = false; 
    for (int i = 0; i < 5; i++) 
    { 
     foreach (int num in values) 
     { 
      if (i == num || i<num) 
       continue; 
      else 
      { 
       values.Add(i); 
       flag = true; 
       break; 
      } 
     } 
     if (flag) 
      break; 
     else 
      continue; 
    } 
} 
+4

Чего вы хотите достичь? Каков ожидаемый результат (скажем, «Ожидаемый результат:« Список значений' с ... значениями »)? –

+2

'foreach (... in values) {... values.Add()}' - это плохая идея. Можете ли вы описать словами логику? Что должен делать 'CheckCondition()'? – Sinatr

+0

'else continue;' избыточно –

ответ

0

Значит, вы хотите добавить i к values, если нет в этом списке нет i? Используйте FindIndex, чтобы проверить, содержит ли список i, он вернет индекс. Если это не так, оно вернет -1.

List<int> values = new List<int>(); 
private void CheckCondition() 
{ 
    for (int i = 0; i < 5; i++) 
    { 
     int idx = values.FindIndex(item => item == i || item > i); 
     if(idx == -1) 
     { 
      values.Add(i); 
      break; 
     } 
    } 
} 
+0

Спасибо, @curarpickt. Этого я хочу. Работаю для меня. – vanloc

+0

вместо использования 'values.FindIndex' использовать' values.Contains/Any' - вам действительно не нужен индекс - просто чтобы узнать, существует ли он –

+0

@ GiladGreen существует условие, чтобы проверить, существует ли этот элемент 'if (i == num || i currarpickt

0

Опишите, что вы хотите. Я могу ответить на вопрос о Youre, чтобы проверить, если элемент находится в списке

List<int> values = new List<int> {1, 2, 3, 4}; 
bool containsItem = values.Contains(2); 
1

Этот код будет выглядеть для каждого значения i в вашей коллекции значений

List<int> values = new List<int> {1,2,3,4,5}; 
for(int i = 0; i< num; i++) 
{ 
    if(values.Contains(i)) 
    { 
     //Do the code you want 
    } 
} 

Если вы хотите проверить некоторые другие условия, касающиеся списка и i вы можете:

List<int> values = new List<int> {1,2,3,4,5}; 
for(int i = 0; i< num; i++) 
{ 

    if(values.Any(item => item == i || item > i)) 
    { 
     //Do the code you want 
    } 
}