我有以下代码,只是循环查找条件并将所有匹配放入新集合中:
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(),但发生了同样的问题。听起来这应该很简单,但我找不到答案。
答案 0 :(得分:6)
var matchingDevices =
new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));
ObservableCollection有一个构造函数,它接受一个IEnumerable,这就是你的Where子句给你的东西。