如何使用Linq / Lambda和ObservableCollection <t> </t>

时间:2010-08-29 04:31:17

标签: linq visual-studio-2010 c#-4.0 lambda

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

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

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

var matchingDevices = (ObservableCollection<Device>)allDevices.Where(d => d.ID != 5); 

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

1 个答案:

答案 0 :(得分:6)

var matchingDevices = 
     new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));

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