我正在学习given.()
and.()
and.()
when.()
and.()
then.()
,我正在处理的应用程序具有搜索事件名称的功能。以下是我在用户输入MVVM Light
时过滤ListBox
的代码。
错误是:TextBox
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<NGO_Volunteer_Comm_Platform_v1._0.DataModel.Event>' to 'System.Collections.Generic.List<NGO_Volunteer_Comm_Platform_v1._0.DataModel.Event>'. An explicit conversion exists (are you missing a cast?)
代码:
ViewModel
如何解决此错误?
答案 0 :(得分:2)
使用ToList
扩展程序方法从List<T>
创建IEnumerable<T>
:
public List<Event> FilteredNames
{
get
{
return (from name in SearchEventCollection where name.EventName.StartsWith(filter) select name).ToList();
}
}
或者将FilteredNames
属性的类型更改为IEnumerable<Event>
。实际上,这可能是一个更好的主意。通常,您不应公开公开具体的集合类型,因为如果您以后需要更改它,则不允许您返回其他类型的实例。此外,返回List<T>
似乎意味着您可以修改列表。但由于每次调用属性时都会返回一个新列表,因此修改它将对该属性没有影响,因此会产生误导。