Ответ 1
Просто используйте метод расширения Enumerable.Cast<T>()
на не-универсальном интерфейсе IEnumerable
, который вы можете сделать неявно в выражении запроса:
var query = from Picture picture in pictures
where ...
select ...;
или явно, например, если вы хотите использовать точечную нотацию:
var query = pictures.Cast<Picture>()
.Where(...)
.Select(...);
Альтернативой Cast<T>()
является OfType<T>()
- который в основном игнорирует любые элементы, которые не имеют нужного типа. В этом случае я думаю, что Cast<T>()
более уместен.
Если вы хотите конвертировать всю коллекцию в List<T>
по любой причине, это тоже легко:
List<Picture> list = pictures.Cast<Picture>().ToList();