Как сравнить ItemElements Radcombobox с ожидаемой строкой?

Мне нужно сравнить, если Radcombobox имеет ItemElements это соответствует моей ожидаемой строке. Вот что я пытаюсь сделать:

foreach (IRadComboBoxItem item in comboBox.ItemElements)
{
    var itemExists = comboBox.ItemElements.FirstOrDefault(items => item.Text.Contains(expectedString));
    if (itemExists == null) continue;
    itemExists.Select();
    return true;
}

тем не мение comboBox.Text.Contains(expectedString) не поддерживается как я сравниваю IRadComboBoxItem со строкой. Не могли бы вы подсказать, как этого добиться?

1 ответ

Используйте метод linq Any:

return comboBox.ItemElements.Any(item => item.Text.Contains(expectedString));

В приведенном выше коде вы немного смешали использование различных методов linq

  1. в FirstOrDefault - возвращает первый элемент в коллекции, который соответствует предикату, в противном случае default(T),
  2. Тогда, если это не так null Вы выполняете Select но назначить его в никуда.
  3. У вас есть этот код в foreach цикл - но не используйте item нет нигде. вам не нужен цикл, потому что вы пытаетесь использовать методы linq (которые за кулисами используют сами циклы)

Следующий комментарий, что вы хотите:

var wantedItem = comboBox.ItemElements.FirstOrDefault(item => item.Text.Contains(expectedString));
if(wantedItem != null)
{
    //What you want to do with item
}

Не работал с RadComboBox сам, но на этом сайте может быть:

RadComboBoxItem item = comboBox.FindItemByText(expectedString);

Я предполагаю, что если он не найдет, он вернетсяnull

Другие вопросы по тегам