错误显式转换存在C#,MVVM Light - LINQ

时间:2015-07-26 10:51:24

标签: c# linq windows-phone-8.1 mvvm-light

我正在学习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

如何解决此错误?

1 个答案:

答案 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>似乎意味着您可以修改列表。但由于每次调用属性时都会返回一个新列表,因此修改它将对该属性没有影响,因此会产生误导。