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)
在这种情况下,Cast
比OfType
你应该确信它只包含RepeaterItem
值更合适.请注意,Cast
如果您在查询表达式中声明范围变量的类型,那么这将被使用,因此这也将起作用:
var query = from RepeaterItem item in items
where item.ItemType == ListItemType.SelectedItem
select item.DataItem;
Run Code Online (Sandbox Code Playgroud)