我有一个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)
你的问题是你似乎正在使用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)
将序列的每个元素投影到新表单中.
根据谓词过滤一系列值.