Почему не там никакие дополнительные методы LINQ на RepeaterItemCollection несмотря на то, что он реализует IEnumerable?
Я использую Linq для объектов в другом месте в том же классе. Однако, когда я пытаюсь сделать так с RepeaterItemCollection, они не доступны. У меня создалось впечатление, что дополнительные методы LINQ были доступны классам та реализация IEnumerable.
Что я пропускаю?
Он реализует IEnumerable
, но не IEnumerable
.
Это не значит, что вы не можете его использовать - это часть того, для чего предназначены OfType
и Cast
, создание общей последовательности из неуниверсальной:
var filtered = items.Cast<RepeaterItem>()
.Where(...) // Or whatever
.ToList();
В этом случае Cast
более подходит, чем OfType
, поскольку вы должны быть уверены, что он будет содержать только значения RepeaterItem
. Обратите внимание, что Cast
- это то, что используется, если вы указываете тип переменной диапазона в выражении запроса, поэтому это тоже будет работать:
var query = from RepeaterItem item in items
where item.ItemType == ListItemType.SelectedItem
select item.DataItem;
Согласно MSDN , он имеет следующие 4 метода расширения:
AsParallel ()
AsQueryable ()
Cast ()
OfType ()
Для работы с LINQ потребуется реализовать универсальный IEnumerable <>
, чего нет.
Однако вы можете сначала «привести» его к нужному типу с помощью метода расширения Cast <>
.