Сравнение элементов контрольного списка с массивом
Итак, у меня есть флажок, который содержит строковые значения, такие как:
- 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);
}