Как использовать Linq / Lambda с ObservableCollection <T> - PullRequest
2 голосов
/ 29 августа 2010

У меня есть следующий код, который просто циклически ищет условие и помещает все совпадения в новую коллекцию:

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

Довольно просто.Я попытался преобразовать это в оператор Lambda в сочетании с методами расширения Linq, но это не удалось:

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

Это не удалось, потому что он не может выполнить приведение.Я попытался добавить .ToList (), но возникла та же проблема.Похоже, это должно быть просто, но я не могу найти ответ.

1 Ответ

6 голосов
/ 29 августа 2010
var matchingDevices = 
     new ObservableCollection<Device>(allDevices.Where(d => d.ID != 5));

ObservableCollection имеет конструктор, который принимает IEnumerable, и именно это дает вам предложение Where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...