我有以下代码,它只是循环查找条件并将所有匹配项放入一个新集合中:
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(),但出现了同样的问题。听起来这应该很简单,但我找不到答案。
最佳答案
var matchingDevices =
new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));
ObservableCollection 有一个接受 IEnumerable 的构造函数,这就是您的 Where 子句所提供的。
关于linq - 如何将 Linq/Lambda 与 ObservableCollection<T> 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3593520/