linq - 如何将 Linq/Lambda 与 ObservableCollection<T> 结合使用

标签 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(),但出现了同样的问题。听起来这应该很简单,但我找不到答案。

最佳答案

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/

相关文章:

objective-c - NSArray 中的元素数,其中 (....)

Linq to SQL & 逻辑分区 (DAL, BLL)

c# - 在 VS2010 中为具有多个项目的解决方案创建部署包

c# - 将项目计数添加到 LINQ 选择

c# - 在我的 LIST 中排名位置的解决方案?

wcf - mvc3 中使用 WCF 服务获取数据的性能技术

asp.net - 让 Visual Studio 2010 Profiler 与 ASP.Net 一起工作?

c++ - 转移到 VS 2010,很多 "unresolved external symbol"错误

c# - 将事件附加到动态对象

c# - 对象类型中有七个方法,但我只能看到四个方法。为什么?