Подтвердить что ты не робот

Linq найти все с определенным типом

Есть ли способ найти в списке все элементы определенного типа с выражением Linq/Lambda?

Обновление. Из-за ответов я понимаю, что вопрос не был достаточно конкретным. Мне нужен новый List с только элементами определенного типа. В моем случае класс не имеет каких-либо подклассов, поэтому не нужно учитывать наследование.

4b9b3361

Ответ 1

Используйте OfType<T> следующим образом:

foreach (var bar in MyList.OfType<Foo>()) {
    ...
}

Ответ 2

Будет ли это делать?

list.Where(t => t is MyType);

Ответ 3

Что-то вроде этого (если использовать Linq для объектов - он не будет работать с Linq для объектов):

var specificListOfTypes = from item in list
                            where item.GetType() == typeof(int)
                            select item;

Ответ 4

возможно, вы могли бы использовать...

        List<object> list = new List<object>();
        list.Add("string");
        list.Add(9);

        var allOfOneType = list.Where(i => i.GetType().Equals(typeof(string)));

Ответ 5

Вы можете использовать метод GetType() и сравнить его с указанным типом.

Например, я выбираю все значения типа строки из списка ниже:

   var myList = new List<object>();

        myList.Add(5);

        myList.Add("My life");

        var result = from obj in myList
                     where obj.GetType() == typeof(string)
                     select obj;

Ответ 6

Я предлагаю использовать это var myLst = new List<object>(); var elements = myList.Where(item => item.GetType().IsInstanceOfType(typeof(MyClass)));