如何使用带有ObservableCollection <T>的Linq/Lambda

Ang*_*ker 2 linq lambda visual-studio-2010 c#-4.0

我有以下代码,只是循环查找条件并将所有匹配放入一个新的集合:

ObservableCollection<Device> allDevices = GetAllDevices();
ObservableCollection<Device> matchingDevices = new ObservableCollection<Device>();
foreach (Device device in allDevices )
{
    if (device.ID != 5)
        matchingDevices .Add(device);
}
Run Code Online (Sandbox Code Playgroud)

很简单.我尝试将此转换为与Linq扩展方法结合使用的Lambda语句,但它失败了:

var matchingDevices = (ObservableCollection<Device>)allDevices.Where(d => d.ID != 5); 
Run Code Online (Sandbox Code Playgroud)

这失败是因为它无法进行演员表演.我尝试附加.ToList(),但发生了同样的问题.听起来这应该很简单,但我找不到答案.

Ian*_*cer 6

var matchingDevices = 
     new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));
Run Code Online (Sandbox Code Playgroud)

ObservableCollection有一个构造函数,它接受一个I​​Enumerable,这就是你的Where子句给你的东西.