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

Существует ли способ найти в Списке все объекты определенного типа с выражением Linq/Lambda?

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

33
задан Lieven Cardoen 13 July 2010 в 11:16
поделиться

5 ответов

Используйте OfType так:

foreach (var bar in MyList.OfType<Foo>()) {
    ...
}
88
ответ дан 27 November 2019 в 17:28
поделиться

Will this do?

list.Where(t => t is MyType);
37
ответ дан 27 November 2019 в 17:28
поделиться

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

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

        var allOfOneType = list.Where(i => i.GetType().Equals(typeof(string)));
0
ответ дан 27 November 2019 в 17:28
поделиться

Вы можете использовать метод 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;
-3
ответ дан 27 November 2019 в 17:28
поделиться

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

var specificListOfTypes = from item in list
                            where item.GetType() == typeof(int)
                            select item;
1
ответ дан 27 November 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: