铸造问题| 我试图返回类似的类型

ste*_*eve 3 c# oop lambda

我有一个ObservableCollection UrlsList.我的WPF应用程序中还有一个复选框,它使用IsChecked属性修改列表中的项目.我遇到的问题是当我写一些lambda表达式来过滤我想要的数据时,我无法将其分配回UrlsList.它只是将我的列表设置为null,然后崩溃应用程序.谢谢你的帮助.

视图模型

public ObservableCollection<URLModel> UrlsList { get; set; } = new ObservableCollection<URLModel>();

public void CheckBoxOnClick()
{
    if (URLModel.IsChecked)
        UrlsList = UrlsList.Select(url => url.ExistsInDb) as ObservableCollection<URLModel>;
    else
        UrlsList = UrlsList.Select(n => n.ExistsInDb == false) as ObservableCollection<URLModel>;
}
Run Code Online (Sandbox Code Playgroud)

警告消息

AAA*_*ddd 6

你的问题是你似乎正在使用Select而不是Where

以下列出了一个列表 IEnumerable<bool>

UrlsList.Select(url => url.ExistsInDb)
Run Code Online (Sandbox Code Playgroud)

实际上你想要的是Where,它对列表进行过滤

UrlsList.Where(url => url.ExistsInDb);
Run Code Online (Sandbox Code Playgroud)

Enumerable.Select方法

将序列的每个元素投影到新表单中.

Enumerable.Where方法

根据谓词过滤一系列值.