Как определить, содержит ли коллекция элементы определенного типа?

#c# #wpf #collections

#c# #wpf ( ВП ) #Коллекции #wpf

Вопрос:

все, у меня есть вопрос, как определить, содержит ли коллекция элементы определенного типа? Например, у меня есть ItemCollection элемента управления ItemControl

 var items = comboBox.Items;
  

Мне нужно знать, какой тип элемента в коллекции Items это мой вопрос

например, мне нужно определить, является ли Items коллекцией элементов типа string или DependencyObject или другого типа.

Помогите мне, пожалуйста, решить эту проблему. Заранее спасибо.

Комментарии:

1. Итак, где именно ваша реализация терпит неудачу?

2. Извините, я все еще не понимаю вашего вопроса. Что не так с вашим текущим подходом?

3. Смотрите обновления в вопросе и заголовке вопроса

4. Я присоединяюсь к @Heinzi в стремлении понять вашу проблему. Элементы [i]. GetType() вернет тип элемента в позиции [i], и вы можете сравнить это с typeof(строка) или typeof(DependencyObject)…

Ответ №1:

легко с Linq:

 var itemsOfTypeString = comboBox.Items.OfType<string>();
var itemsOfTypeDependencyObject = comboBox.Items.OfType<DependencyObject>();
  

Ответ №2:

 List<Type> types = (from item in comboBox.Items select item.GetType()).Distinct();
  

Это дает список всех типов, которые отображаются в элементах вашего поля со списком.

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

 bool containsStrings = comboBox.Items.OfType<string>.Any()
bool containsDependencyObjects = comboBox.Items.OfType<DependencyObject>.Any()
  

Ответ №3:

         foreach (object item in comboBox.Items)
        {
            if (item.GetType() == typeof(string))
            {
                //DoYourStuff
            }
        }