C# 将IEnumerable强制转换为自定义ObservableCollection类?
是否可以将IEnumerable转换为从ObservableCollection类继承的自定义类 原因是我只想在get上选择一组经过筛选的项目。我想在get上实现它,因为许多其他属性引用CustomItems并对这些项执行处理,但我想让它处理过滤后的项集,具体取决于值是否启用 下面是帮助解释我想要实现的目标的代码:C# 将IEnumerable强制转换为自定义ObservableCollection类?,c#,inheritance,casting,C#,Inheritance,Casting,是否可以将IEnumerable转换为从ObservableCollection类继承的自定义类 原因是我只想在get上选择一组经过筛选的项目。我想在get上实现它,因为许多其他属性引用CustomItems并对这些项执行处理,但我想让它处理过滤后的项集,具体取决于值是否启用 下面是帮助解释我想要实现的目标的代码: public class CustomItemsCollection : ObservableCollection<ItemViewModel> { public
public class CustomItemsCollection : ObservableCollection<ItemViewModel>
{
public ListView ListView { get; set; }
public void ScrollToItem(object item = null)
{
//Some custom Code
}
}
具体而言,本部分:
if(SomeValueIsEnabled)
{
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue));
var castedItems = (CustomItemsCollection)filteredItems;
return castedItems;
}
这是可能的还是错误的?最好的做法是什么
谢谢大家! 您不能仅强制转换它,但您可以创建CustomItemsCollection
的实例,并使用filteredItems
对其进行初始化
将构造函数添加到自定义类,该类将传递到:
请尝试使用以下代码:
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue))
.Select(pre=> new ItemViewModel(){
//add info here
});
var castedItems = new CustomItemsCollection(filteredItems);
工作得很好!每次查询CustomItems时创建新CustomItems集合是否可能存在内存泄漏?不,不应该存在任何泄漏。GC会像往常一样清理的。谢谢。我尝试了它,但它在.Select上为我显示了一个错误。
public class CustomItemsCollection : ObservableCollection<ItemViewModel>
{
public CustomItemsCollection(IEnumerable<ItemViewModel> items)
: base(items) { }
// your other code here
}
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue));
var collection = new CustomItemsCollection(filteredItems);
return collection;
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue))
.Select(pre=> new ItemViewModel(){
//add info here
});
var castedItems = new CustomItemsCollection(filteredItems);