Сравнение элементов контрольного списка с массивом

Итак, у меня есть флажок, который содержит строковые значения, такие как:

  • ASDF-432-Qwer-vcxz
  • реук-123-Qwer-vcxz
  • Рети-323-qw65-vcyt
  • kjhf-232-ouyy-bjkl
  • ...

И у меня есть массив (onlineVaults), который содержит некоторые из тех же значений, что и в контрольном списке, как:

  • Рети-323-qw65-vcyt
  • ASDF-432-Qwer-vcxz

Теперь я хочу проверить только те значения в контрольном списке, которые находятся в массиве. Другие должны быть не проверены.

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    if (onlineVaults.Contains(checklistbox.Items[i]))
    {
        checklistbox.SetItemChecked(i, true);
    }
}

Я пытался это понять, но это не работает. Он проверяет только одно значение и ничего больше. Что я должен делать?

1 ответ

Попробуй это

var checklistbox = new List<string>
{
     "asdf-432-qwer-vcxz",
     "rewq-123-qwer-vcxz",
     "rety-323-qw65-vcyt",
     "kjhf-232-ouyy-bjkl"
};
var onlineVaults = new List<string>
{
     "rety-323-qw65-vcyt",
     "asdf-432-qwer-vcxz"
};

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    checklistbox.SetItemChecked(i, onlineVaults.Contains(checklistbox.Items[i]));            
}

РЕДАКТИРОВАТЬ:

Чтобы игнорировать значения регистра и обрезки, попробуйте это

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    checklistbox.SetItemChecked(i, IsValueExist(onlineVaults, checklistbox.Items[i]));            
}

private bool IsValueExist(List<string> list, string value)
{
    return list.Any(x => string.Compare(x.Trim(), value.Trim(), StringComparison.InvariantCultureIgnoreCase) == 0);        
}
Другие вопросы по тегам