linq фильтрация по типу класса - PullRequest
0 голосов
/ 08 января 2019

У меня есть список, содержащий 2 разных типа объектов, которые являются полилиниями и текстами. Я хочу создать только новый список полилиний.

что я делаю;

var list2 = list1.SelectMany(x=> x.Type == PolyLine)

Ошибка: 'PolyLine' - это тип, который недопустим в данном контексте.

Как мне отфильтровать эти объекты здесь?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вам не нужно SelectMany, скорее, вам нужен пункт Where:

var result = list1.Where(x => x is PolyLine);

Для получения правильного типа используется оператор is.

Это может быть дополнительно упрощено с использованием метода расширения OfType.

0 голосов
/ 08 января 2019

Просто используйте расширение OfType<T>:

var list2 = list1.OfType<PolyLine>().ToList();

Выбирает все элементы в list1 типа PolyLine.

После ToList() результирующий тип list2 будет List<PolyLine>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...