代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

如何将Linq/lambda与ObservableCollection一起使用<t>

  •  2
  • AngryHacker  · 技术社区  · 14 年前

    我有以下代码,它简单地循环查找条件并将所有匹配项放入新集合中:

    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 回复  |  直到 8 年前
        1
  •  6
  •   Ian Mercer    8 年前
    var matchingDevices = 
         new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));
    

    ObservableCollection有一个采用IEnumerable的构造函数,这就是您的WHERE子句所给的。