为什么在RepeaterItemCollection上没有LINQ扩展方法,尽管它实现了IEnumerable?

Fra*_*ank 12 c# linq-to-objects repeater

为什么在RepeaterItemCollection上没有LINQ扩展方法,尽管它实现了IEnumerable?

我正在将Linq用于同一类中其他地方的对象.但是,当我尝试使用RepeaterItemCollection时,它们不可用.我的印象是LINQ扩展方法可用于实现IEnumerable的类.

我错过了什么?

Jon*_*eet 22

它实现了IEnumerable,但没有实现IEnumerable<T>.

这并不意味着你不能使用它 - 这是什么OfType和为什么的一部分,Cast从非通用序列构建一个通用序列:

var filtered = items.Cast<RepeaterItem>()
                    .Where(...) // Or whatever
                    .ToList();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,CastOfType你应该确信它只包含RepeaterItem值更合适.请注意,Cast如果您在查询表达式中声明范围变量的类型,那么这将被使用,因此这也将起作用:

var query = from RepeaterItem item in items
            where item.ItemType == ListItemType.SelectedItem
            select item.DataItem;
Run Code Online (Sandbox Code Playgroud)